| 1234567891011121314151617181920212223242526272829303132333435 |
- # ── 构建阶段 ──
- FROM python:3.11-slim AS builder
- WORKDIR /build
- COPY pyproject.toml .
- RUN pip install --no-cache-dir -e . && \
- pip install --no-cache-dir gunicorn
- # ── 运行阶段 ──
- FROM python:3.11-slim
- ENV TZ=Asia/Shanghai
- RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
- WORKDIR /app
- COPY --from=builder /usr/local/lib/python3.11/site-packages/ /usr/local/lib/python3.11/site-packages/
- COPY --from=builder /usr/local/bin/ /usr/local/bin/
- COPY app/ app/
- COPY data/ data/ 2>/dev/null || true
- RUN useradd -m -u 1000 appuser && chown -R appuser:appuser /app
- USER appuser
- EXPOSE 9000
- CMD ["gunicorn", "app.main:app", \
- "--worker-class", "uvicorn.workers.UvicornWorker", \
- "--bind", "0.0.0.0:9000", \
- "--workers", "2", \
- "--timeout", "60", \
- "--keep-alive", "10", \
- "--access-logfile", "-", \
- "--error-logfile", "-"]
|