FROM python:3.12-slim AS builder WORKDIR /build RUN apt-get update && apt-get install -y --no-install-recommends \ gcc libpq-dev libffi-dev \ && rm -rf /var/lib/apt/lists/* RUN python -m venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" COPY pyproject.toml . RUN pip install --no-cache-dir . FROM python:3.12-slim RUN apt-get update && apt-get install -y --no-install-recommends \ libpq5 libpango-1.0-0 libcairo2 libgdk-pixbuf-2.0-0 curl \ && rm -rf /var/lib/apt/lists/* RUN addgroup --system app && adduser --system --ingroup app app COPY --from=builder /opt/venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" WORKDIR /app COPY --chown=app:app . . USER app HEALTHCHECK --interval=30s --timeout=5s --retries=3 \ CMD curl -f http://localhost:8000/api/v1/health || exit 1 CMD ["sh", "-c", "alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 8000"]