← Volver al Generador Principal

Configuración de Docker Compose para Django + PostgreSQL + Celery + Redis

Cuándo usar esta combinación

Esta arquitectura es el estándar para aplicaciones web que requieren desacoplar operaciones pesadas del ciclo de petición-respuesta HTTP. Se debe utilizar cuando la aplicación demanda persistencia relacional robusta (PostgreSQL), gestión de caché en memoria y cola de mensajes de baja latencia (Redis), y procesamiento asíncrono o distribuido en segundo plano (Celery), como generación de reportes, envío masivo de correos, transacciones financieras o ingesta de datos, garantizando tiempos de respuesta rápidos y alta escalabilidad horizontal del backend Django.


Variables de entorno críticas para producción

  1. DJANGO_SECRET_KEY: Semilla criptográfica para la firma de sesiones, tokens CSRF y cookies. Mantener el valor por defecto compromete la seguridad de autenticación del sitio.
  2. POSTGRES_PASSWORD: Contraseña del usuario de la base de datos. Debe ser una cadena de alta entropía y no compartirse entre entornos.
  3. REDIS_PASSWORD: Mecanismo de autenticación (requirepass en Redis). Por defecto, Redis no exige contraseña, lo que expone el bróker a ataques de inyección de tareas o secuestro de datos si el puerto es accesible dentro de la red.

Consejo de Rendimiento y Seguridad

Prevención de Memory Leaks y Aislamiento de Procesos: Nunca ejecutes Django o Celery como usuario root dentro de las imágenes; define directivas USER nonroot en el Dockerfile.

Para Celery, añade obligatoriamente la bandera --max-tasks-per-child=100 (o ajusta según tu carga) en su comando de inicio. Los workers de Python tienden a fragmentar y retener memoria tras ejecutar tareas complejas con dependencias pesadas; este parámetro recicla los subprocesos automáticamente, evitando que un contenedor sea eliminado abruptamente por el OOM Killer (Out Of Memory) del host. Acompaña esto definiendo directivas estrictas de deploy.resources.limits en docker-compose.yml.

Checklist de Seguridad antes de desplegar