# Imagen base minimalista con Python 3.12
FROM python:3.12-slim AS base

# Variables de entorno para un comportamiento consistente de Python
ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1

# Instala dependencias del sistema necesarias para compilar paquetes como psycopg
RUN apt-get update \
    && apt-get install --no-install-recommends -y build-essential libpq-dev \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Copiamos el archivo de requisitos e instalamos las dependencias de Python
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

# Copiamos el código fuente de la aplicación
COPY app ./app

# Exponemos el puerto por defecto de la API
EXPOSE 8000

# Comando por defecto para iniciar la API
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
