#!/usr/bin/env bash set -euo pipefail C="hxki-postgres" echo "=== FIX POSTGRES ADMIN (one-shot) ===" docker inspect "$C" >/dev/null 2>&1 || { echo "FEHLT: $C"; exit 1; } IMG="$(docker inspect "$C" --format '{{.Config.Image}}')" echo "[0] Image: $IMG" # Admin-User/PW/DB aus ENV lesen (Autorität: Container selbst) get_env() { local key="$1" docker inspect "$C" --format '{{range .Config.Env}}{{println .}}{{end}}' \ | awk -F= -v k="$key" '$1==k{print substr($0, index($0,"=")+1)}' | head -n1 } ADMIN_USER="$(get_env POSTGRES_USER || true)" ADMIN_PW="$(get_env POSTGRES_PASSWORD || true)" ADMIN_DB="$(get_env POSTGRES_DB || true)" # Bitnami-Fallbacks [ -n "${ADMIN_USER:-}" ] || ADMIN_USER="$(get_env POSTGRESQL_USERNAME || true)" [ -n "${ADMIN_PW:-}" ] || ADMIN_PW="$(get_env POSTGRESQL_PASSWORD || true)" [ -n "${ADMIN_DB:-}" ] || ADMIN_DB="$(get_env POSTGRESQL_DATABASE || true)" # Default-DB-Fallback [ -n "${ADMIN_DB:-}" ] || ADMIN_DB="postgres" echo "[1] Detected ADMIN_USER=${ADMIN_USER:-} ADMIN_DB=${ADMIN_DB:-}" [ -n "${ADMIN_USER:-}" ] || { echo "FAIL: Konnte ADMIN_USER nicht aus Container ENV lesen."; exit 1; } [ -n "${ADMIN_PW:-}" ] || { echo "FAIL: Konnte ADMIN_PW nicht aus Container ENV lesen."; exit 1; } # Zielwerte für n8n (aus n8n-Container-ENV – Autorität!) N8N="hxki-n8n" docker inspect "$N8N" >/dev/null 2>&1 || { echo "FEHLT: $N8N"; exit 1; } get_env_n8n() { local key="$1" docker inspect "$N8N" --format '{{range .Config.Env}}{{println .}}{{end}}' \ | awk -F= -v k="$key" '$1==k{print substr($0, index($0,"=")+1)}' | head -n1 } PG_USER="$(get_env_n8n DB_POSTGRESDB_USER || true)" PG_PW="$(get_env_n8n DB_POSTGRESDB_PASSWORD || true)" PG_DB="$(get_env_n8n DB_POSTGRESDB_DATABASE || true)" [ -n "${PG_USER:-}" ] || { echo "FAIL: n8n ENV fehlt DB_POSTGRESDB_USER"; exit 1; } [ -n "${PG_PW:-}" ] || { echo "FAIL: n8n ENV fehlt DB_POSTGRESDB_PASSWORD"; exit 1; } [ -n "${PG_DB:-}" ] || { echo "FAIL: n8n ENV fehlt DB_POSTGRESDB_DATABASE"; exit 1; } echo "[2] Target (für n8n): user=$PG_USER db=$PG_DB" echo "[3] Apply in Postgres (create/alter role + create db)" docker exec -i "$C" sh -lc "export PGPASSWORD='${ADMIN_PW}'; psql -v ON_ERROR_STOP=1 -U '${ADMIN_USER}' -d '${ADMIN_DB}'" </dev/null" echo "OK: Postgres Credentials passen jetzt für n8n." echo "=== ENDE ==="