Configuración de Docker Compose para Next.js 14 + PostgreSQL + Redis Cache
Cuándo utilizar este stack
Esta arquitectura es óptima para aplicaciones web modernas (SSR/SSG con App Router) con alta concurrencia. Next.js 14 gestiona la UI y el renderizado en servidor, PostgreSQL garantiza la consistencia transaccional y persistencia de datos estructurados, y Redis optimiza la latencia actuando como almacén de sesiones de usuario, intermediario de cache incremental (ISR) o gestor de colas en segundo plano. Es ideal para plataformas SaaS, e-commerce y sistemas que requieren baja latencia y alta escalabilidad.
Variables de entorno críticas para producción
POSTGRES_PASSWORD: Clave de acceso del usuario administrador de PostgreSQL. Debe ser de alta entropía y estar sincronizada con la cadena de conexión (DATABASE_URL).REDIS_PASSWORD: Token de autenticación requerido para Redis (mediante la directiva--requirepass). Por defecto, Redis no exige contraseña, lo cual es crítico bloquear.NEXTAUTH_SECRET(oAUTH_SECRET): Clave criptográfica utilizada por Next.js para firmar tokens JWT, sesiones y cookies de autenticación.
Consejo de Seguridad y Rendimiento
- Aislamiento de red (Seguridad): Nunca expongas los puertos de PostgreSQL (
5432) ni Redis (6379) en la directivaports:deldocker-compose.ymlen producción. Utiliza una red interna (networks:) para que solo el contenedor de Next.js tenga acceso a ellos mediante resolución DNS interna de Docker. - Build Standalone (Rendimiento): Configura
output: 'standalone'ennext.config.jsy utiliza un Dockerfile multi-stage basado ennode:alpine. Esto reduce el tamaño de la imagen de Next.js de ~1.5GB a menos de 150MB, copia solo las dependencias estrictamente necesarias y permite ejecutar el proceso con un usuario no-root (USER nodejs).
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