Skip to main content

Build en modo standalone

next.config.ts activa output: "standalone". El build empaqueta solo lo que Next.js necesita para arrancar (.next/standalone + .next/static + public), sin el resto de node_modules.
El CLI de Prisma no viaja dentro del bundle standalone. Por eso la imagen final incluye, aparte, un toolkit de migraciones separado (más abajo).
next.config.ts también fuerza el file-tracing de sharp y @img con outputFileTracingIncludes, porque el tracing automático de Next.js no siempre los detecta al construir el bundle standalone; sin ese ajuste, el procesamiento de imágenes falla en producción.

Arranque: docker-entrypoint.sh

Al arrancar el contenedor, un script de entrypoint corre antes que node server.js:
  1. Crea los directorios de upload (public/uploads/avatars, public/uploads/camellos) por si la imagen arranca sin volumen o con un volumen montado vacío.
  2. Aplica prisma migrate deploy usando un toolkit de Prisma (CLI, schema y cliente generado) instalado aparte, en /migrate, precisamente porque el CLI no está incluido en el bundle standalone.
El seed no corre en cada deploy — se asume que el entorno ya tiene datos. Se ejecuta a mano, con npm run db:seed, solo cuando hace falta.

Integración continua

El workflow de CI corre en cada push y pull request contra master, en una matriz con Node.js 22 y 25:

Construir y ejecutar la imagen

Seed o creación de un admin dentro del contenedor (si tienes shell):