Dieses Verzeichnis enthält die Docker Compose Konfiguration für die Entwicklungsumgebung des JEEERAaH-Projekts.
Container:
# Komplette Umgebung neu aufsetzen
cd ~/develop/github/java/main/config/shared/docker
./full-reset.sh
# Oder manuell:
docker compose down -v # Alles stoppen und Volumes löschen
docker compose up -d # Alle Services starten
docker compose ps # Status prüfen
docker compose logs -f # Logs verfolgen
Ein Container, drei Datenbanken:
| Database | User | Password | Verwendung |
|---|---|---|---|
| jeeeraaah | jeeeraaah | jeeeraaah | Hauptanwendung |
| lib_test | lib_test | lib_test | Integrationstests |
| keycloak | keycloak | keycloak | Keycloak Persistence |
Superuser: postgres:postgres (nur für Container-Management)
Init-Scripts:
initdb/01-init-jeeeraaah.sql - Erstellt jeeeraaah DB + Userinitdb/02-init-lib_test.sql - Erstellt lib_test DB + Userinitdb/03-init-keycloak.sql - Erstellt keycloak DB + UserVerbindung testen:
# Als Superuser
docker exec -it postgres psql -U postgres
# Als jeeeraaah User
docker exec -it postgres psql -U jeeeraaah -d jeeeraaah
# Als lib_test User
docker exec -it postgres psql -U lib_test -d lib_test
Admin Console: http://localhost:8080/admin
Realm: jeeeraaah-realm
Healthcheck:
healthcheck/keycloak-healthcheck.sh/health/ready EndpointRealm Setup:
cd ~/develop/github/java/main/root/lib/keycloak_admin
mvn exec:java -Dexec.mainClass="de.ruu.lib.keycloak.admin.setup.KeycloakRealmSetup"
Service URL: http://localhost:8090
Alle Credentials und Konfigurationen sind in .env definiert:
# PostgreSQL
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_JEEERAAAH_DB=jeeeraaah
POSTGRES_JEEERAAAH_USER=jeeeraaah
POSTGRES_JEEERAAAH_PASSWORD=jeeeraaah
# ... (siehe .env für vollständige Liste)
# Keycloak
KEYCLOAK_ADMIN_USER=admin
KEYCLOAK_ADMIN_PASSWORD=admin
KEYCLOAK_TEST_USERNAME=jeeeraaah
KEYCLOAK_TEST_PASSWORD=jeeeraaah
WICHTIG: Niemals .env in Git committen! Verwende .env.template als Vorlage.
Persistente Daten:
volumes:
postgres-data # PostgreSQL Datenbanken
postgres-backups # PostgreSQL Backups
keycloak-data # Keycloak Konfiguration/Realms
jasperreports-output # JasperReports Output
Volumes löschen:
docker compose down -v # ACHTUNG: Löscht alle Daten!
# Alle Container
docker compose ps
# PostgreSQL
docker exec postgres pg_isready -U postgres
# Keycloak
curl http://localhost:8080/health/ready
# JasperReports
curl http://localhost:8090/health
Das Projekt enthält lib.docker.health mit automatischen Health Checks beim Application-Start.
# Status anzeigen
docker compose ps
docker compose logs -f # Alle Logs
docker compose logs -f postgres # Nur PostgreSQL
docker compose logs -f keycloak # Nur Keycloak
# Einzelne Services steuern
docker compose up -d postgres # Nur PostgreSQL starten
docker compose restart keycloak # Keycloak neu starten
docker compose stop jasperreports # JasperReports stoppen
# Container betreten
docker exec -it postgres bash # PostgreSQL Container
docker exec -it keycloak bash # Keycloak Container
# Aufräumen
docker compose down # Container stoppen
docker compose down -v # Container + Volumes löschen
docker system prune -a --volumes # ALLES löschen (VORSICHT!)
Problem: Container startet, wird aber nicht healthy
Lösung:
docker logs postgres
docker exec postgres pg_isready -U postgres
Häufige Ursachen:
docker ps -a | grep postgreslsof -i :5432initdb/*.sqlProblem: Container startet, aber Health Check schlägt fehl
Lösung:
docker logs keycloak --tail 100
curl http://localhost:8080/health/ready
Häufige Ursachen:
.envProblem: Keycloak läuft, aber jeeeraaah-realm existiert nicht
Lösung:
cd ~/develop/github/java/main/root/lib/keycloak_admin
mvn exec:java -Dexec.mainClass="de.ruu.lib.keycloak.admin.setup.KeycloakRealmSetup"
Problem: “Port already in use”
Lösung:
# Welcher Prozess verwendet den Port?
lsof -i :5432 # PostgreSQL
lsof -i :8080 # Keycloak
lsof -i :8090 # JasperReports
# Prozess beenden
kill <PID>
cd ~/develop/github/java/main/config/shared/docker
# Variante 1: Reset-Script (empfohlen)
./full-reset.sh
# Variante 2: Manuell
docker compose down -v
docker volume prune -f
docker compose up -d
cd ~/develop/github/java/main/root/lib/keycloak_admin
mvn exec:java -Dexec.mainClass="de.ruu.lib.keycloak.admin.setup.KeycloakRealmSetup"
~/develop/github/java/main/root/lib/keycloak_admin/README.md~/develop/github/java/main/root/lib/docker_health/README.md~/develop/github/java/main/QUICKSTART.md~/develop/github/java/main/KONSOLIDIERUNG-2026-01-30.mdEntwicklungsumgebung:
Für Produktion:
.env niemals committen