fix: quitar el VOLUME anónimo que borraba la base en cada despliegue

`VOLUME /app/data` hacía que Docker fabricara un volumen anónimo en cada arranque,
y Coolify los purga al recrear el contenedor. Cada despliegue estrenaba una base
vacía que `ensureSeed()` volvía a sembrar: se perdían las citas, los clientes y
todo lo configurado desde Ajustes, en silencio y sin error.

Verificado en el host: el volumen montado era 991d42df… y el día anterior era
3cff8c0d…, y no queda ningún volumen huérfano con agendapro.db — los anteriores
fueron destruidos. La base se creaba un minuto después del contenedor.

La persistencia la aporta ahora un volumen con nombre declarado como Persistent
Storage en Coolify y montado en /app/data, precargado con un snapshot consistente
de la base actual (155 citas, 15 clientes, 8 usuarios, integrity_check ok).

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
AgendaPro Dev
2026-08-29 00:33:11 -06:00
co-authored by Claude Opus 5
parent 521c206ba7
commit 4f566ddde7
+12 -2
View File
@@ -43,9 +43,19 @@ COPY server ./server
COPY shared ./shared COPY shared ./shared
COPY tsconfig.json ./ COPY tsconfig.json ./
# Persistent SQLite data # Persistent SQLite data.
#
# NO declares `VOLUME /app/data` aquí. Esa instrucción hace que Docker fabrique un
# volumen ANÓNIMO en cada arranque, y Coolify los purga al recrear el contenedor:
# cada despliegue estrenaba base vacía y `ensureSeed()` la resembraba, así que se
# perdían las citas, los clientes y todo lo configurado en Ajustes. Se verificó
# comparando el nombre del volumen entre despliegues — cambiaba cada vez.
#
# La persistencia la aporta el almacenamiento con nombre declarado en Coolify
# (`s30f7egdlkx4wyjp59o1iunc-agendamax-data` montado en /app/data), que sobrevive a
# la recreación del contenedor. Si algún día se despliega en otro sitio, hay que
# declarar allí un volumen equivalente: sin él la base es efímera.
RUN mkdir -p /app/data RUN mkdir -p /app/data
VOLUME /app/data
EXPOSE 3000 EXPOSE 3000
CMD ["npx", "tsx", "server/index.ts"] CMD ["npx", "tsx", "server/index.ts"]