Dockerfile 910 B

12345678910111213141516171819202122232425262728293031
  1. # First, build the application in the `/app` directory.
  2. FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS builder
  3. ENV UV_COMPILE_BYTECODE=1
  4. ENV UV_LINK_MODE=copy
  5. WORKDIR /app
  6. RUN --mount=type=cache,target=/root/.cache/uv \
  7. --mount=type=bind,source=uv.lock,target=uv.lock \
  8. --mount=type=bind,source=pyproject.toml,target=pyproject.toml \
  9. uv sync --frozen --no-install-project --no-dev
  10. ADD . /app
  11. RUN --mount=type=cache,target=/root/.cache/uv \
  12. uv sync --frozen --no-dev
  13. # Then, use a final image without uv
  14. FROM python:3.12-slim-bookworm
  15. # Copy the application from the builder
  16. COPY --from=builder --chown=app:app /app /app
  17. WORKDIR /app
  18. # Set environment variables
  19. ENV PYTHONDONTWRITEBYTECODE=1
  20. ENV PYTHONUNBUFFERED=1
  21. ENV PATH="/app/.venv/bin:$PATH"
  22. # Expose port 8000
  23. EXPOSE 8000
  24. # Use gunicorn on port 8000
  25. CMD ["gunicorn", "--bind", ":8000", "--workers", "2", "django_project.wsgi"]