--- # ── Prisma Migration Job ── # Runs `prisma migrate deploy` before the app starts. # Jenkins re-creates this Job on every deploy (unique name per build). apiVersion: batch/v1 kind: Job metadata: name: prisma-migrate namespace: ecommerce labels: app: prisma-migrate app.kubernetes.io/part-of: ecommerce spec: backoffLimit: 3 ttlSecondsAfterFinished: 300 template: metadata: labels: app: prisma-migrate spec: restartPolicy: Never initContainers: # Wait for PostgreSQL to be ready before running migrations - name: wait-for-postgres image: postgres:15-alpine command: - sh - -c - | echo "Waiting for PostgreSQL to accept connections..." until pg_isready -h postgres -p 5432 -U ecommerce; do echo " PostgreSQL not ready yet — sleeping 3s" sleep 3 done echo "PostgreSQL is ready!" env: - name: PGPASSWORD valueFrom: secretKeyRef: name: ecommerce-secrets key: POSTGRES_PASSWORD containers: - name: migrate image: ecommerce-backend:latest # patched by kustomize overlay command: ["npx", "prisma", "migrate", "deploy"] env: - name: DATABASE_URL valueFrom: secretKeyRef: name: ecommerce-secrets key: DATABASE_URL resources: requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi