feat: Kubernetes-Job fuer Prisma-Migrationen beim Deploy

Bisher lief keine Migration automatisch: dem Runtime-Image fehlten
Prisma-CLI, prisma/migrations/ und prisma.config.ts (nur dist+generated
wurden kopiert, prisma war devDependency). Jetzt:
- prisma von devDependencies zu dependencies verschoben (wird fuer
  migrate:deploy im --omit=dev Runtime-Image gebraucht)
- neues npm-Script migrate:deploy (prisma migrate deploy)
- Dockerfile kopiert prisma/, prisma.config.ts zusaetzlich ins Runtime-Image
- deploy/k8s/backend/migrate-job.yaml: Job, der dasselbe Backend-Image mit
  ueberschriebenem command nutzt statt eines eigenen Migrations-Images,
  laeuft einmalig vor dem Rollout (Reihenfolge/kubectl-Befehle als
  Kommentar in der Datei)

Verifiziert: tsc, 253/253 Unit-Tests, Build clean, `npx prisma --version`
laedt prisma.config.ts korrekt.
This commit is contained in:
Nick Szaunig committed 2026-08-26 22:28:44 +02:00
1 parent 80890a5fc3
commit a6e5b0331f
5 files changed
+38 -134

No files matched your search

+26
View File
@@ -0,0 +1,26 @@
# Job statt Teil des Deployment-CMD: laeuft einmalig vor dem Rollout, damit
# nicht mehrere Backend-Pod-Replicas gleichzeitig Migrationen ausfuehren
# (siehe ARCHITECTURE.md Abschnitt 8). Jobs sind unveraenderlich, daher vor
# jedem Deploy mit neuem Image-Tag zuerst loeschen:
#
# kubectl delete job apicore-backend-migrate --ignore-not-found
# kubectl apply -f deploy/k8s/backend/migrate-job.yaml
# kubectl wait --for=condition=complete job/apicore-backend-migrate --timeout=120s
# kubectl apply -f deploy/k8s/backend/deployment.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: apicore-backend-migrate
spec:
backoffLimit: 2
ttlSecondsAfterFinished: 3600
template:
spec:
restartPolicy: Never
containers:
- name: migrate
image: git.encry.de/nick.rosenloecher/apicore-backend:latest
command: ["npm", "run", "migrate:deploy"]
envFrom:
- secretRef:
name: apicore-backend-secret