Configuración de Docker Compose para Laravel 11 + PostgreSQL + Redis + Mailpit
Cuándo usar este stack
Esta arquitectura es ideal para plataformas SaaS, APIs empresariales y aplicaciones transaccionales complejas que exigen alta concurrencia e integridad referencial estricta (PostgreSQL). Redis optimiza la latencia gestionando la caché, las sesiones y el procesamiento asíncrono de colas (Laravel Queues). La inclusión de Mailpit garantiza un entorno de pruebas seguro para inspeccionar flujos de correo en local sin riesgo de envíos reales a clientes. Es la configuración estándar para desacoplar servicios y replicar paridad entre desarrollo y producción.
Variables de entorno críticas para producción
APP_KEY: Clave criptográfica simétrica de Laravel (AES-256-CBC). Si se mantiene la de desarrollo o una clave por defecto, los datos cifrados, tokens y sesiones serán vulnerables al descifrado y suplantación.DB_PASSWORD/POSTGRES_PASSWORD: Credencial del usuario de PostgreSQL. Debe generarse con alta entropía para evitar accesos no autorizados a la base de datos relacional.REDIS_PASSWORD: Autenticación para el motor en memoria. Por defecto, Redis suele desplegarse sin autenticación en desarrollo; en producción, es mandatorio habilitar la directivarequirepassy definir esta variable para evitar la ejecución remota de comandos o volcado de memoria.
Consejo de Seguridad y Rendimiento
Aislamiento de red y ejecución sin privilegios (Least Privilege):
- Seguridad: En producción, elimina completamente el servicio Mailpit y no expongas los puertos
5432(PostgreSQL) y6379(Redis) en el host (ports:). Limita su alcance a la red interna de Docker (expose:o redes definidas) para que solo el contenedor de Laravel tenga visibilidad sobre ellos. Asimismo, asegúrate de que el contenedor de Laravel ejecute PHP-FPM bajo un usuario no-root (www-datao UID específico). - Rendimiento: Configura Redis con una directiva de asignación máxima de memoria (
maxmemory) y una política de desalojo (maxmemory-policy allkeys-lru) para evitar caídas del contenedor por falta de memoria RAM (OOM Killer) cuando las colas o la caché escalen de forma imprevista.
Checklist de Seguridad antes de desplegar
- Cambiar las contraseñas por defecto en el archivo .env
- Mapear volúmenes persistentes en el VPS
- Configurar las reglas de firewall para los puertos requeridos