# Multi-stage para imagen final lean.
# Stage 1: deps — instala dependencias Python en una venv aislada.
# Stage 2: runtime — copia código y venv, corre como user no-root con FS read-only.

FROM python:3.12-slim AS deps
WORKDIR /build
COPY requirements.txt .
RUN python -m venv /venv \
 && /venv/bin/pip install --no-cache-dir --upgrade pip \
 && /venv/bin/pip install --no-cache-dir -r requirements.txt

FROM python:3.12-slim AS runtime
WORKDIR /app

COPY --from=deps /venv /venv
ENV PATH="/venv/bin:$PATH"

COPY app /app/app
COPY alembic /app/alembic
COPY alembic.ini /app/alembic.ini

RUN useradd -u 1001 -r appuser \
 && chown -R appuser:appuser /app
USER appuser

EXPOSE 8000

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--no-access-log"]
