Seed laeuft beim Start mit, nicht nur die Migration
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
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.
This commit is contained in:
+6
-2
@@ -2,7 +2,7 @@
|
|||||||
# Ablage: /opt/stacks/afis/compose.yaml, .env im eigenen Dockge-Reiter.
|
# Ablage: /opt/stacks/afis/compose.yaml, .env im eigenen Dockge-Reiter.
|
||||||
# Begründung der Entscheidungen in docs/11-betrieb.md:
|
# Begründung der Entscheidungen in docs/11-betrieb.md:
|
||||||
# - keine Einmal- und keine Init-Container, Dockge zeigt beendete Container nicht
|
# - 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
|
# - jeder Dienst hat einen Healthcheck, das ist in Dockge die Statusanzeige
|
||||||
# - kein Reverse Proxy im Stack: TLS macht ein Proxy davor
|
# - kein Reverse Proxy im Stack: TLS macht ein Proxy davor
|
||||||
#
|
#
|
||||||
@@ -33,7 +33,11 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
# Die Migration läuft im Startkommando, nicht in einem Init-Container.
|
# Die Migration läuft im Startkommando, nicht in einem Init-Container.
|
||||||
# Die Prisma-CLI liegt im Image unter /app/migrator, es wird nichts nachgeladen.
|
# 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
|
env_file: .env
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
|
|||||||
+10
-1
@@ -45,9 +45,18 @@ ENV NEXT_TELEMETRY_DISABLED=1
|
|||||||
RUN pnpm --filter @afis/web build
|
RUN pnpm --filter @afis/web build
|
||||||
|
|
||||||
# Eigenständige Migrations-CLI mit heruntergeladener Schema-Engine.
|
# 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 && \
|
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/prisma /migrator/prisma && \
|
||||||
|
cp -r /repo/packages/db/src /migrator/src && \
|
||||||
cp /repo/packages/db/prisma.config.ts /migrator/prisma.config.ts
|
cp /repo/packages/db/prisma.config.ts /migrator/prisma.config.ts
|
||||||
|
|
||||||
# --- Laufzeit -----------------------------------------------------------------
|
# --- Laufzeit -----------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user