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

149 lines
4.8 KiB
Markdown

# 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)
```bash
# 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
```bash
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
```bash
docker-compose -f docker-compose.yml up -d postgres redis kafka consul zipkin
```
### 3. Mit Debug-Unterstützung für Service-Entwicklung
```bash
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
```bash
# 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:
```bash
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:
```bash
docker network ls | grep meldestelle
docker network rm meldestelle-network 2>/dev/null || true
```
### Bei Build-Fehlern:
```bash
docker-compose build --no-cache --pull
```
## 🧪 Verifikation
### Status prüfen:
```bash
docker-compose ps
docker network ls | grep meldestelle
```
### Logs überwachen:
```bash
docker-compose logs -f [service-name]
```
### Services stoppen:
```bash
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.