Dieses Verzeichnis enthält SQL-Skripte für die Initialisierung der PostgreSQL-Datenbanken. Diese Skripte werden automatisch beim ersten Start des PostgreSQL-Containers ausgeführt.
Wichtig: Alle Datenbanken laufen jetzt in einem einzigen PostgreSQL-Container namens postgres auf Port 5432.
Dies vereinfacht:
initdb/
├── 01-init-jeeeraaah.sql # Initialisierung für jeeeraaah Anwendungsdatenbank
├── 02-init-lib_test.sql # Initialisierung für lib_test Integrationstests
├── 03-init-keycloak.sql # Initialisierung für keycloak Persistenz
└── README.md # Diese Datei
Docker führt alle .sql-Dateien in /docker-entrypoint-initdb.d/ in alphabetischer Reihenfolge aus:
01-init-jeeeraaah.sql → Erstellt Datenbank jeeeraaah mit Benutzer jeeeraaah02-init-lib_test.sql → Erstellt Datenbank lib_test mit Benutzer lib_test03-init-keycloak.sql → Erstellt Datenbank keycloak mit Benutzer keycloak
POSTGRES_USER / POSTGRES_PASSWORD)
jeeeraaahjeeeraaahjeeeraaahjdbc:postgresql://localhost:5432/jeeeraaah
lib_testlib_testlib_testjdbc:postgresql://localhost:5432/lib_test
keycloakkeycloakkeycloakjdbc:postgresql://localhost:5432/keycloak
Alle Credentials sind zentral in ../.env definiert:
# PostgreSQL Container
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
# Schema: jeeeraaah
POSTGRES_JEEERAAAH_DB=jeeeraaah
POSTGRES_JEEERAAAH_USER=jeeeraaah
POSTGRES_JEEERAAAH_PASSWORD=jeeeraaah
# Schema: lib_test
POSTGRES_LIB_TEST_DB=lib_test
POSTGRES_LIB_TEST_USER=lib_test
POSTGRES_LIB_TEST_PASSWORD=lib_test
# Schema: keycloak
POSTGRES_KEYCLOAK_DB=keycloak
POSTGRES_KEYCLOAK_USER=keycloak
POSTGRES_KEYCLOAK_PASSWORD=keycloak
Konvention: Benutzer/Passwort entspricht immer dem Datenbanknamen (zur Vereinfachung).
Um die Init-Skripte erneut auszuführen (WARNUNG: löscht alle Daten):
# Kompletter Reset
cd ~/develop/github/java/main/config/shared/docker
docker compose down -v
docker compose up -d
# Warten bis Container healthy sind
sleep 30
# Keycloak-Realm neu erstellen
cd ~/develop/github/java/main/root/lib/keycloak_admin
mvn exec:java -Dexec.mainClass="de.ruu.lib.keycloak.admin.setup.KeycloakRealmSetup"
Oder verwende den Alias:
ruu-docker-reset
Ursache: Container wurde ohne Ausführung der Init-Skripte gestartet (Volume existierte bereits) Lösung:
docker compose down -v # Volumes entfernen!
docker compose up -d
Ursache: Credentials-Mismatch zwischen .env und Anwendungs-Konfiguration Lösung:
.env korrekte Werte hattesting.properties mit .env übereinstimmtdocker compose down -v && docker compose up -d
Antwort: Kein Problem! Alle drei Datenbanken sind in einem Container:
jeeeraaah auf Port 5432lib_test auf Port 5432keycloak auf Port 5432
Verschiedene Datenbanken, gleicher Port!