NextJS + PostgreSQL + Prisma
Next.js es el framework de React para producción: renderizado del lado del servidor, generación estática, rutas de API y optimización de imágenes, sin tener que configurar nada.
Este Stack lo integra con PostgreSQL a través de Prisma, un ORM que genera un cliente tipado a partir de tu esquema, de modo que las consultas se validan al compilar y no en producción.
Servicios que incluye
Además de tu aplicación, el Stack levanta PostgreSQL, un nginx que recibe el tráfico del puerto 80, un servicio de backups automáticos y el administrador de archivos web.
Estructura del proyecto
.
├── app
│ ├── prisma
│ │ └── schema.prisma
│ ├── src
│ │ └── ...
│ ├── next-env.d.ts
│ ├── next.config.js
│ ├── package.json
│ └── tsconfig.json
├── backup
│ └── backup-runner.sh
├── nginx
│ └── default.conf
├── .env.example
├── app.Dockerfile
└── compose.yaml
Puesta en marcha
Instalá el Stack y levantalo:
docker-deploy-stack --stack javascript/nextjs-postgres-prisma
cd /root/stack/javascript/nextjs-postgres-prisma
docker compose up -d
Después reemplazá la aplicación de ejemplo por la tuya, desde Git, por SFTP o desde el administrador de archivos web, siguiendo como-despliego-una-aplicacion-en-un-stack.md. Tu código va en la carpeta app/.
Cada vez que actualices el código, aplicá los cambios:
docker compose up -d --build
Configuración
Los valores editables están en el archivo .env del Stack:
| Variable | Por defecto | Para qué sirve |
|---|---|---|
APP_PORT |
80 |
Puerto público del Stack. |
APP_ENV |
development |
Entorno de la aplicación. |
DB_NAME |
nextjs |
Nombre de la base de datos. |
DB_USER |
nextjs |
Usuario de la base de datos. |
BACKUP_ENABLED |
1 |
Backups automáticos: 1 activados, 0 desactivados. |
BACKUP_INTERVAL_SECONDS |
86400 |
Cada cuántos segundos se hace un backup. |
BACKUP_RETENTION_DAYS |
7 |
Cuántos días se conservan los backups. |
POSTGRES_VERSION |
16-alpine |
Versión de la imagen correspondiente. |
Después de cambiarlo, aplicá los cambios con docker compose up -d.
Comandos útiles
docker compose ps # ver los contenedores que están corriendo
docker compose logs -f # ver los logs en vivo
docker compose restart # reiniciar los servicios
docker compose down # detener y eliminar los contenedores