apiVersion: batch/v1 kind: Job metadata: name: postgres-migrate annotations: argocd.argoproj.io/hook: Sync argocd.argoproj.io/hook-delete-policy: BeforeHookCreation,HookSucceeded argocd.argoproj.io/sync-wave: "2" spec: backoffLimit: 3 template: spec: restartPolicy: OnFailure containers: - name: postgres-migrate image: postgres:16 imagePullPolicy: IfNotPresent envFrom: - secretRef: name: trade-postgres command: - sh - -ec - | export PGPASSWORD="$POSTGRES_PASSWORD" until pg_isready -h postgres -U "$POSTGRES_USER" -d "$POSTGRES_DB"; do sleep 1; done psql -h postgres -U "$POSTGRES_USER" -d "$POSTGRES_DB" -v ON_ERROR_STOP=1 -f /migrations/001_init.sql volumeMounts: - name: migrations mountPath: /migrations/001_init.sql subPath: 001_init.sql readOnly: true volumes: - name: migrations configMap: name: postgres-initdb