# --------------------------- # Builder stage # --------------------------- FROM python:3.11-slim AS builder WORKDIR /app # Instalar uv (más rápido que pip) COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv ENV UV_COMPILE_BYTECODE=1 \ UV_LINK_MODE=copy COPY pyproject.toml uv.lock* ./ # Instalar dependencias con uv RUN uv sync --frozen --no-install-project --no-dev # --------------------------- # Runtime stage # --------------------------- FROM python:3.11-alpine ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PATH="/app/.venv/bin:$PATH" WORKDIR /app RUN apk add --no-cache libstdc++ && \ adduser -D -h /app appuser # Copiar virtualenv COPY --from=builder /app/.venv /app/.venv # Copiar código COPY --chown=appuser:appuser ./src ./src COPY --chown=appuser:appuser ./main.py* ./app.py* ./ USER appuser EXPOSE 8000 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]