meldestelle/docker-compose-errors-complete-fix.md
2025-08-17 00:15:29 +02:00

4.8 KiB

Docker-Compose Fehler Behebung - Vollständige Lösung

Problemübersicht

Die folgenden Fehler wurden beim Ausführen der docker-compose Befehle identifiziert und behoben:

  1. Network-Konfigurationsfehler: meldestelle-network declared as external, but could not be found
  2. ContainerConfig KeyError: Fehler beim Inspizieren bestehender Container
  3. API Gateway Service-Fehler: Service api-gateway has neither an image nor a build context specified
  4. Deploy Resource Warnings: Unsupported reservations.cpus sub-keys

🔧 Angewendete Lösungen

1. Network-Konfiguration korrigiert ✓

Problem: Inkonsistente Network-Definitionen zwischen compose-Dateien

  • docker-compose.yml: driver: bridge
  • docker-compose.services.yml und docker-compose.clients.yml: external: true

Lösung:

  • Entfernung von external: true aus allen compose-Dateien
  • Einheitliche Verwendung von driver: bridge

2. ContainerConfig KeyError behoben ✓

Problem: Korrupte Container-Metadaten von vorherigen Runs Lösung:

  • Bereinigung aller bestehenden Container
  • Befehl: docker rm $(docker ps -a -q --filter "name=meldestelle")

3. API Gateway Service-Konfiguration ✓

Problem: docker-compose.override.yml referenziert Services, die nicht in der Basis-Konfiguration definiert sind Lösung:

  • Korrekte Verwendung der compose-Datei-Kombinationen
  • docker-compose.override.yml nur zusammen mit docker-compose.services.yml verwenden

4. Deploy Resource Warnings eliminiert ✓

Problem: Docker Compose 1.29.2 unterstützt keine reservations unter deploy.resources Lösung:

  • Entfernung aller reservations Sektionen aus docker-compose.services.yml
  • Beibehaltung der limits Konfigurationen

Korrekte Docker-Compose Befehle

Vorbereitung (einmalig nach Fehlern)

# Zum richtigen Verzeichnis wechseln
cd /home/stefan-mo/WsMeldestelle/Meldestelle

# Bestehende Container bereinigen (falls ContainerConfig Fehler auftreten)
docker rm $(docker ps -a -q --filter "name=meldestelle") 2>/dev/null || true

# Verwaiste Images bereinigen (optional)
docker image prune -f

1. Alle Services einschließlich Clients

docker-compose \
  -f docker-compose.yml \
  -f docker-compose.services.yml \
  -f docker-compose.clients.yml \
  up -d

2. Nur Infrastructure für Backend-Entwicklung

docker-compose -f docker-compose.yml up -d postgres redis kafka consul zipkin

3. Mit Debug-Unterstützung für Service-Entwicklung

DEBUG=true SPRING_PROFILES_ACTIVE=docker \
docker-compose -f docker-compose.yml -f docker-compose.services.yml up -d

4. Mit Live-Reload für Frontend-Entwicklung

# WICHTIG: Nur verwenden wenn docker-compose.services.yml ebenfalls geladen wird
docker-compose \
  -f docker-compose.yml \
  -f docker-compose.services.yml \
  -f docker-compose.override.yml \
  up -d

🚨 Wichtige Hinweise

Override-Datei Verwendung

  • docker-compose.override.yml darf NICHT allein mit docker-compose.yml verwendet werden
  • Grund: Override definiert nur Konfigurationsüberschreibungen, keine vollständigen Services
  • Richtig: -f docker-compose.yml -f docker-compose.services.yml -f docker-compose.override.yml
  • Falsch: -f docker-compose.yml -f docker-compose.override.yml

Network-Konsistenz

  • Alle compose-Dateien verwenden jetzt driver: bridge für meldestelle-network
  • Keine external: true Deklarationen mehr vorhanden
  • Network wird automatisch von Docker Compose erstellt

Resource-Limits

  • Nur limits werden verwendet (memory, cpus)
  • reservations wurden entfernt (nicht unterstützt in Docker Compose 1.29.2)
  • Services starten ohne Warnings

🔍 Fehlerbehebung

Bei "ContainerConfig" Fehlern:

docker rm $(docker ps -a -q --filter "name=meldestelle") 2>/dev/null || true
docker-compose down --volumes --remove-orphans 2>/dev/null || true

Bei Network-Fehlern:

docker network ls | grep meldestelle
docker network rm meldestelle-network 2>/dev/null || true

Bei Build-Fehlern:

docker-compose build --no-cache --pull

🧪 Verifikation

Status prüfen:

docker-compose ps
docker network ls | grep meldestelle

Logs überwachen:

docker-compose logs -f [service-name]

Services stoppen:

docker-compose down
# Mit Volumes entfernen:
docker-compose down -v

Zusammenfassung

  • Network-Konfiguration vereinheitlicht
  • ContainerConfig-Fehler durch Container-Cleanup behoben
  • API Gateway Service-Konfiguration korrigiert
  • Deploy Resource Warnings eliminiert
  • Korrekte Verwendung der compose-Datei-Kombinationen dokumentiert

Alle ursprünglichen Fehler wurden behoben. Die docker-compose Befehle sollten nun ohne Fehler oder Warnings ausgeführt werden können.