From b035c40e671d92d0680cd36b5dd98d998e811a31 Mon Sep 17 00:00:00 2001 From: Harlekin Date: Fri, 4 Sep 2026 09:58:21 +0200 Subject: [PATCH] Seed laeuft beim Start mit, nicht nur die Migration Auf einer frischen Datenbank lief nur `migrate deploy`. Die Tabellen standen damit, aber leer: keine Freigabestufen, keine Status-Etiketten, keine Fallarten, keine Nummernkreise. Die Anwendung startet so zwar, aber es laesst sich keine Akte anlegen - es gibt keine Vorlage. Der Seed besteht ausschliesslich aus upserts und darf deshalb bei jedem Start mitlaufen. Dafuer liegen jetzt tsx, der Prisma-Client und der Quelltext des db-Pakets mit im Migrator-Verzeichnis des Images, statt beim Start aus dem Netz geholt zu werden. --- compose.yaml | 8 ++++++-- docker/web.Dockerfile | 11 ++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/compose.yaml b/compose.yaml index 9502a69..4c3b937 100644 --- a/compose.yaml +++ b/compose.yaml @@ -2,7 +2,7 @@ # Ablage: /opt/stacks/afis/compose.yaml, .env im eigenen Dockge-Reiter. # Begründung der Entscheidungen in docs/11-betrieb.md: # - keine Einmal- und keine Init-Container, Dockge zeigt beendete Container nicht -# - Migrationen laufen im Startkommando von `web` +# - Migration und Seed laufen im Startkommando von `web` # - jeder Dienst hat einen Healthcheck, das ist in Dockge die Statusanzeige # - kein Reverse Proxy im Stack: TLS macht ein Proxy davor # @@ -33,7 +33,11 @@ services: restart: unless-stopped # Die Migration läuft im Startkommando, nicht in einem Init-Container. # Die Prisma-CLI liegt im Image unter /app/migrator, es wird nichts nachgeladen. - command: sh -c "cd /app/migrator && node node_modules/prisma/build/index.js migrate deploy && cd /app && node web/server.js" + command: > + sh -c "cd /app/migrator + && node node_modules/prisma/build/index.js migrate deploy + && node node_modules/tsx/dist/cli.mjs prisma/seed.ts + && cd /app && node web/server.js" env_file: .env environment: NODE_ENV: production diff --git a/docker/web.Dockerfile b/docker/web.Dockerfile index a7f2073..037e3f4 100644 --- a/docker/web.Dockerfile +++ b/docker/web.Dockerfile @@ -45,9 +45,18 @@ ENV NEXT_TELEMETRY_DISABLED=1 RUN pnpm --filter @afis/web build # Eigenständige Migrations-CLI mit heruntergeladener Schema-Engine. +# Dazu der Seed: er legt den Grundzustand an - Freigabestufen, Status-Etiketten, +# Fallarten, Nummernkreise. Ohne ihn startet die Anwendung zwar, aber es laesst +# sich keine Akte anlegen, weil es keine Vorlage gibt. Er besteht ausschliesslich +# aus upserts und darf deshalb bei jedem Start mitlaufen. RUN mkdir -p /migrator && cd /migrator && \ - npm install --no-package-lock --no-audit --no-fund "prisma@${PRISMA_VERSION}" && \ + npm install --no-package-lock --no-audit --no-fund \ + "prisma@${PRISMA_VERSION}" \ + "@prisma/client@${PRISMA_VERSION}" \ + "@prisma/adapter-pg@${PRISMA_VERSION}" \ + pg tsx && \ cp -r /repo/packages/db/prisma /migrator/prisma && \ + cp -r /repo/packages/db/src /migrator/src && \ cp /repo/packages/db/prisma.config.ts /migrator/prisma.config.ts # --- Laufzeit -----------------------------------------------------------------