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.
27 lines
975 B
YAML
27 lines
975 B
YAML
# 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
|