Dockerfile 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. # ── 构建阶段 ──
  2. FROM python:3.11-slim AS builder
  3. WORKDIR /build
  4. RUN apt-get update -qq && apt-get install -y -qq --no-install-recommends gcc g++ python3-dev && rm -rf /var/lib/apt/lists/*
  5. COPY pyproject.toml .
  6. RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip && \
  7. pip download --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -d /wheels -e . && \
  8. pip download --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -d /wheels gunicorn
  9. # ── 运行阶段 ──
  10. FROM python:3.11-slim
  11. ENV TZ=Asia/Shanghai
  12. RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
  13. WORKDIR /app
  14. COPY --from=builder /wheels /wheels
  15. RUN pip install --no-cache-dir --find-links /wheels cfc-langgraph gunicorn && rm -rf /wheels
  16. COPY app/ app/
  17. COPY data/ data/
  18. RUN useradd -m -u 1000 appuser && chown -R appuser:appuser /app
  19. USER appuser
  20. EXPOSE 9000
  21. CMD ["gunicorn", "app.main:app", \
  22. "--worker-class", "uvicorn.workers.UvicornWorker", \
  23. "--bind", "0.0.0.0:9000", \
  24. "--workers", "2", \
  25. "--timeout", "60", \
  26. "--keep-alive", "10", \
  27. "--access-logfile", "-", \
  28. "--error-logfile", "-"]