# 1. Imagen base ligera de Python
FROM python:3.12-slim

# 2. Variables para optimizar Python en contenedores
# PYTHONDONTWRITEBYTECODE: Evita generar archivos .pyc innecesarios en el contenedor
# PYTHONUNBUFFERED: Hace que los logs se impriman directamente en la consola de Coolify
ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1

# 3. Directorio de trabajo
WORKDIR /app

# 4. Instalar dependencias del sistema necesarias para compilar Pillow y psycopg2 si hiciera falta
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    libpq-dev \
    libjpeg-dev \
    zlib1g-dev \
    && rm -rf /var/lib/apt/lists/*

# 5. Instalar dependencias de Python
COPY requirements.txt /app/
RUN pip install --no-cache-dir --upgrade pip && \
    pip install --no-cache-dir -r requirements.txt

# 6. Copiar el código del proyecto
COPY . /app/

# 7. Ejecutar collectstatic durante el build
# Pasamos una SECRET_KEY ficticia porque Django la exige para compilar estáticos
RUN python manage.py collectstatic --noinput --settings=config.settings

# 8. Asegurar permisos de ejecución para el entrypoint
RUN chmod +x /app/entrypoint.sh

# 9. Puerto interno que expondrá la aplicación
EXPOSE 8000

# 10. Comando de inicio
ENTRYPOINT ["/app/entrypoint.sh"]