meldestelle/docs/07_Infrastructure/runbooks/local-development.md
Stefan Mogeritsch 09b0b1a462 infra: clean up Keycloak configuration, enforce consistency in .env, and improve health checks
Streamlined Keycloak configurations with defaults for development and production in `.env`. Added health checks and improved environment variable documentation with comments to differentiate local and server deployments. Ensured compatibility with pre-built registry images.
2026-03-06 11:23:24 +01:00

4.8 KiB

type status owner
Guide ACTIVE DevOps Engineer

Runbook: Lokale Entwicklungsumgebung

Dieses Dokument beschreibt, wie die Docker-basierte lokale Entwicklungsumgebung für das Projekt "Meldestelle" verwendet wird.

1. Voraussetzungen

  • Docker und Docker Compose müssen installiert sein.
  • Eine .env-Datei muss im Projekt-Root vorhanden sein. Eine Vorlage befindet sich in .env.example.

2. Starten der Umgebung

Die Docker-Compose-Konfiguration verwendet Profile, um das Starten von verschiedenen Teilen des Systems zu ermöglichen.

2.1. Vollständiger Start (All-in-One)

Dieser Befehl startet alle definierten Services, einschließlich der Kerninfrastruktur, Backend-Services, Frontend und Monitoring-Tools.

docker-compose --profile all up --build -d
  • --build: Baut die Images vor dem Start neu, falls Änderungen in den Dockerfiles oder im Quellcode vorliegen.
  • -d: Startet die Container im "detached" Modus (im Hintergrund).

2.2. Nur Backend-Entwicklung

Wenn Sie nur an den Backend-Services arbeiten, können Sie die GUI- und Monitoring-Komponenten weglassen, um Ressourcen zu sparen.

docker-compose --profile backend --profile infra up --build -d

Dieser Befehl startet:

  • Die Kerninfrastruktur (infra): postgres, redis, keycloak, consul.
  • Alle Backend-Services (backend): api-gateway, ping-service, etc.

2.3. Nur Frontend-Entwicklung

Wenn Sie primär am Frontend arbeiten, benötigen Sie nur das API-Gateway und die Kerninfrastruktur.

docker-compose --profile gui --profile infra up --build -d

Dieser Befehl startet:

  • Die Kerninfrastruktur (infra).
  • Das api-gateway.
  • Die web-app (Nginx-Server für das Frontend).

3. Stoppen der Umgebung

Um alle laufenden Container des Projekts zu stoppen:

docker-compose down

Um die Container zu stoppen und auch die benannten Volumes (Datenbankinhalte, etc.) zu löschen:

docker-compose down -v

4. Debugging eines Services

Alle Backend-Services sind so konfiguriert, dass sie im Debug-Modus gestartet werden können, wenn die Umgebungsvariable DEBUG=true gesetzt ist.

Beispiel: ping-service debuggen

  1. Setzen der Umgebungsvariable: Öffnen Sie die docker-compose.yaml und finden Sie den ping-service. Fügen Sie unter environment die folgende Zeile hinzu oder passen Sie sie an:

    environment:
      # ... andere Variablen
      DEBUG: "true"
    

    Hinweis: In der docker-compose.yaml ist dies bereits über ${PING_DEBUG:-true} vorbereitet. Sie können also auch Ihre .env-Datei anpassen.

  2. Port-Mapping: Der ping-service mappt den Debug-Port 5006 auf den Host.

  3. Starten und Verbinden: Starten Sie die Umgebung neu (docker-compose up -d --build ping-service). Sie können nun einen Remote-Debugger Ihrer IDE mit dem Host localhost und dem Port 5006 verbinden.

5. Nützliche Endpunkte und Tools

Wenn die Umgebung mit dem all-Profil läuft, sind die folgenden Tools verfügbar:

6. Fortgeschrittene Anwendungsfälle: Override-Dateien

Im Projekt existieren leere Dateien wie docker-compose.frontend.yaml und docker-compose.services.yaml. Diese sind absichtlich leer und sollen nicht versioniert werden. Sie dienen als persönliche Override-Dateien für lokale Entwicklungsszenarien.

Zweck: Anstatt die zentrale docker-compose.yaml zu verändern, können Sie lokale Anpassungen in diesen Dateien vornehmen.

Beispiel: Frontend-Entwicklung mit Hot-Reload

Um Hot-Reload für die Nginx-Konfiguration zu aktivieren, können Sie die docker-compose.frontend.yaml mit folgendem Inhalt füllen:

# docker-compose.frontend.yaml
services:
  web-app:
    volumes:
      - ./config/docker/nginx/web-app/nginx.conf:/etc/nginx/nginx.conf:ro

Starten Sie die Umgebung dann mit beiden Dateien:

docker-compose -f docker-compose.yaml -f docker-compose.frontend.yaml up

Docker Compose wird die Konfigurationen zusammenführen, wobei die Definitionen in der docker-compose.frontend.yaml Vorrang haben.