#!/bin/bash set -euo pipefail until pg_isready -U "$POSTGRES_USER" -q; do sleep 1; done for secret_file in /run/secrets/*_postgres_password; do [ -f "$secret_file" ] || continue [ "$secret_file" = "/run/secrets/postgres_password" ] && continue service="$(basename "$secret_file" _postgres_password)" password="$(cat "$secret_file")" echo "Ensuring database and user for '$service'..." psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-SQL DO \$\$ BEGIN IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = '$service') THEN CREATE ROLE "$service" WITH LOGIN PASSWORD '$password'; ELSE ALTER ROLE "$service" WITH PASSWORD '$password'; END IF; END \$\$; SELECT 'CREATE DATABASE "$service" OWNER "$service"' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$service')\gexec SQL done touch /tmp/init_complete