apiVersion: batch/v1 kind: Job metadata: name: paperless-database-init namespace: database spec: backoffLimit: 5 template: metadata: labels: app.kubernetes.io/name: paperless-database-init spec: restartPolicy: OnFailure containers: - name: create-database image: postgres:17.11-alpine command: - /bin/sh - -ec - | PGPASSWORD="$POSTGRES_ADMIN_PASSWORD" psql \ --host postgres \ --username postgres \ --dbname postgres \ --set ON_ERROR_STOP=1 \ --set paperless_password="$PAPERLESS_DB_PASSWORD" <<'SQL' SELECT format( 'CREATE ROLE paperless LOGIN PASSWORD %L', :'paperless_password' ) WHERE NOT EXISTS ( SELECT FROM pg_roles WHERE rolname = 'paperless' ) \gexec SELECT format('CREATE DATABASE paperless OWNER paperless') WHERE NOT EXISTS ( SELECT FROM pg_database WHERE datname = 'paperless' ) \gexec SQL env: - name: POSTGRES_ADMIN_PASSWORD valueFrom: secretKeyRef: name: postgres-shared-secrets key: POSTGRES_ADMIN_PASSWORD - name: PAPERLESS_DB_PASSWORD valueFrom: secretKeyRef: name: postgres-shared-secrets key: PAPERLESS_DB_PASSWORD resources: requests: cpu: 10m memory: 32Mi limits: cpu: 100m memory: 128Mi