40 lines
1.3 KiB
Docker
40 lines
1.3 KiB
Docker
# 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"] |