Dockerfile 1.2 KB

12345678910111213141516171819202122232425262728
  1. FROM dev.data-turing.cn:14443/library/python:3.13-slim-bookworm AS build
  2. COPY --from=dev.data-turing.cn:14443/library/uv:latest /uv /uvx /bin/
  3. WORKDIR /app
  4. ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy UV_PYTHON=3.13 UV_PYTHON_INSTALL_MIRROR="https://ghfast.top/https://github.com/astral-sh/python-build-standalone/releases/download"
  5. COPY uv.lock pyproject.toml README.md ./
  6. RUN uv sync --no-install-project --no-dev
  7. COPY . .
  8. RUN uv sync --frozen --no-dev
  9. FROM dev.data-turing.cn:14443/library/python:3.13-slim-bookworm AS runtime
  10. ENV PATH="/app/.venv/bin:$PATH" \
  11. PYTHONUNBUFFERED=1 \
  12. HOST="0.0.0.0" \
  13. PORT="8000"
  14. RUN groupadd -g 1001 appgroup && \
  15. useradd -u 1001 -g appgroup -m -d /app -s /bin/false appuser
  16. WORKDIR /app
  17. COPY --from=build --chown=appuser:appgroup /app/.venv /app/.venv
  18. COPY --from=build --chown=appuser:appgroup /app/app /app/app
  19. COPY --from=build --chown=appuser:appgroup /app/main.py /app/main.py
  20. COPY --from=build --chown=appuser:appgroup /app/README.md /app/README.md
  21. COPY --from=build --chown=appuser:appgroup /app/pyproject.toml /app/pyproject.toml
  22. COPY --from=build --chown=appuser:appgroup /app/uv.lock /app/uv.lock
  23. USER appuser
  24. EXPOSE 8000
  25. CMD ["python", "-u", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]