FROM ghcr.io/astral-sh/uv:0.5.11-python3.12-bookworm-slim AS builder ENV UV_COMPILE_BYTECODE=1 \ UV_LINK_MODE=copy WORKDIR /app COPY pyproject.toml uv.lock ./ RUN uv sync --frozen --no-dev COPY . . RUN uv run python manage.py collectstatic --noinput FROM python:3.12-slim-bookworm ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PATH="/app/.venv/bin:$PATH" \ DJANGO_DEBUG=False \ PORT=8000 WORKDIR /app RUN useradd --create-home --shell /usr/sbin/nologin appuser COPY --from=builder /app /app RUN chown -R appuser:appuser /app USER appuser EXPOSE 8000 CMD ["sh", "-c", "python manage.py migrate --noinput && gunicorn config.wsgi:application --bind 0.0.0.0:${PORT}"]