# ---------- Base image ----------
FROM python:3.12-slim AS base

# Evita pyc, mejora logs
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

# Dependencias del sistema necesarias para crypto / PDFs
RUN apt-get update && apt-get install -y \
    build-essential \
    libssl-dev \
    libffi-dev \
    ca-certificates \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app


# ---------- Dependencies ----------
FROM base AS deps

# Copiamos solo metadatos para aprovechar cache
COPY ./pyproject.toml ./

# Instalamos dependencias
RUN pip install --upgrade pip \
    && pip install .


# ---------- Runtime ----------
FROM base AS runtime

# Copiamos dependencias instaladas
COPY --from=deps /usr/local /usr/local

# Copiamos código fuente
COPY src/ ./

# Puerto FastAPI
EXPOSE 8000

# Usuario no-root (buena práctica)
RUN useradd -m appuser
USER appuser

# Comando de arranque
CMD ["sh", "-c", "\
    if [ \"$UVICORN_RELOAD\" = \"true\" ]; then \
    uvicorn signing_service.main:app --host 0.0.0.0 --port 8000 --reload; \
    else \
    uvicorn signing_service.main:app --host 0.0.0.0 --port 8000 --workers ${UVICORN_WORKERS:-1}; \
    fi"]

# Healthcheck

#RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*

#HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
#    CMD curl -f http://127.0.0.1:8000/health || exit 1
