# 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 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"]