# Stage 1: Build FROM python:3.12-slim as builder WORKDIR /app COPY pyproject.toml . RUN pip install --no-cache-dir poetry && \ poetry config virtualenvs.create false && \ poetry install --no-interaction --no-ansi COPY models.py schemas.py main.py test_main.py . # Stage 2: Production FROM python:3.12-slim WORKDIR /app COPY --from=builder /root/.local/share/python-poetry/cache /root/.local/share/python-poetry/cache COPY --from=builder /app /app RUN useradd -m appuser && \ chown -R appuser:appuser /app USER appuser COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv EXPOSE 8000 CMD ["uv", "run", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]