Royal Clean CRM · Documentación
Despliegue

Actualizar y volver atrás

Cómo se publica un cambio, qué pasa con las migraciones y qué hacer cuando algo sale mal.

Cómo se publica un cambio

Cada push a main dispara un despliegue si el webhook de GitHub está activo. Si no, se pulsa Deploy en Dokploy.

El flujo es siempre el mismo, y en este orden:

Construcción

Docker construye la imagen. Si la compilación falla, no pasa nada más: el contenedor que está sirviendo sigue sirviendo.

Migraciones

Al arrancar, el contenedor aplica las migraciones pendientes con prisma migrate deploy, que sólo aplica lo que falta y nunca recrea nada.

Si una migración falla, el contenedor no arranca. Es deliberado: es preferible que el despliegue se detenga a que la aplicación sirva sobre una base a medio migrar.

Arranque y comprobación

Next.js arranca y el healthcheck empieza a responder. Traefik no enruta tráfico al contenedor nuevo hasta que está sano.

Migraciones compatibles hacia atrás

Durante unos segundos conviven la versión vieja y la nueva. Si una migración rompe lo que la versión vieja espera, esos segundos son errores para quien esté usando el sistema.

Por eso, siempre que se pueda:

En vez deHaz
Renombrar una columnaAñadir la nueva, escribir en ambas, migrar los datos, quitar la vieja después
Añadir una columna obligatoriaAñadirla opcional, rellenarla, hacerla obligatoria en un despliegue posterior
Borrar una columnaDejar de usarla, desplegar, y borrarla en el siguiente

`migrate dev` jamás en producción

Puede recrear la base entera. En producción sólo corre migrate deploy, que es lo que hace el contenedor por su cuenta.

Volver atrás

Redesplegar la versión anterior

Deployments en Dokploy → localiza el despliegue que funcionaba → Redeploy.

Esto devuelve el código, no la base de datos.

Comprobar si basta

Si el problema era del código —un fallo de interfaz, una consulta rota, un cálculo mal— con esto se resuelve.

Si la migración fue destructiva, no basta

Volver al código anterior sobre una base ya migrada deja la aplicación hablando con un esquema que no espera.

Ahí hay que restaurar el respaldo, y por eso importa haber probado una restauración antes de necesitarla. El procedimiento está en Operación diaria.

Ver qué está pasando

Application → Logs en Dokploy.

La aplicación emite JSON por línea, así que se puede filtrar:

docker logs NOMBRE_DEL_CONTENEDOR 2>&1 | grep '"level":"error"'
docker logs NOMBRE_DEL_CONTENEDOR 2>&1 | tail -50

Nunca se registran contraseñas, tokens, secretos de almacenamiento, códigos de acceso a propiedades ni las firmas completas de las URLs. La redacción es automática por nombre de campo: no depende de que quien escribe el registro se acuerde.

Cuando el contenedor no arranca

Mira los registros del arranque. Los tres casos habituales:

Lo que diceQué es
«Variables de entorno inválidas o faltantes»Falta una obligatoria. El mensaje dice cuál
Error de migraciónUna migración falló. No la fuerces: revisa qué pasó
«AUTH_SECRET debe tener al menos 32 caracteres»Exactamente eso

Más síntomas y sus causas en Diagnóstico.

Actualizar la documentación

El sitio de documentación es un servicio aparte. Se redespliega igual, desde su propio panel, y no tiene migraciones ni base que restaurar: volver atrás es siempre suficiente.

On this page