Configuración de Docker Compose para Laravel 11 + PostgreSQL + Redis + Mailpit
Cuándo usar este stack
Esta arquitectura es ideal para aplicaciones web empresariales, plataformas SaaS y APIs de alto tráfico que requieren transacciones complejas y consistencia de datos estricta (PostgreSQL), procesamiento asíncrono de colas y almacenamiento en caché de baja latencia (Redis), junto con un entorno de prueba local aislado para flujos de correo electrónico (Mailpit) sin riesgo de envíos accidentales a usuarios reales durante el ciclo de desarrollo en Laravel 11.
Variables de entorno críticas para producción
APP_KEY: Clave criptográfica (base64:...) utilizada por Laravel para cifrar cookies, sesiones y datos sensibles. Si se mantiene la clave por defecto o se compromete, la aplicación es vulnerable a descifrado de sesiones e inyección de datos.DB_PASSWORD/POSTGRES_PASSWORD: Credencial de autenticación del usuario de base de datos. Debe sustituirse por una cadena de alta entropía (mínimo 32 caracteres alfanuméricos) generada aleatoriamente.REDIS_PASSWORD: Contraseña para el servicio de Redis. Por defecto, Redis suele ejecutarse sin autenticación en entornos locales; en producción, es mandatorio habilitar directivas comorequirepasspara evitar ejecuciones de comandos no autorizadas o accesos a memoria.
Consejo de seguridad y rendimiento
-
Seguridad (Aislamiento de Mailpit y Redes Internas): Elimina por completo el servicio Mailpit en el archivo
docker-compose.prod.yml, ya que es una herramienta exclusiva de depuración y expone información confidencial. Asimismo, configura los servicios de PostgreSQL y Redis en una red interna privada (internal: true) de Docker, sin mapear sus puertos (ports:) hacia el host de producción, exponiendo únicamente los puertos HTTP/HTTPS del servidor web/Laravel. -
Rendimiento: Para PostgreSQL y Redis en producción, utiliza siempre volúmenes nombrados vinculados a almacenamiento SSD local y ajusta el parámetro
shared_buffersymax_connectionsen PostgreSQL según la RAM asignada al contenedor, evitando el cuello de botella de las configuraciones por defecto.
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