Docker hat unser „Works on my machine”-Problem gelöst. Aber fünf Container manuell mit zwanzigzeiligen docker-run-Befehlen starten? docker-compose (damals noch Fig) brachte eine elegante Lösung — eine YAML-Datei, ein Befehl, der gesamte Stack.
Unser Entwicklungsstack¶
version: '2'
services:
app:
build: .
ports:
- "8080:8080"
depends_on:
- db
- redis
environment:
- DB_HOST=db
db:
image: postgres:9.4
environment:
- POSTGRES_DB=myapp
- POSTGRES_PASSWORD=dev
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:2.8
rabbitmq:
image: rabbitmq:3-management
ports:
- "15672:15672"
volumes:
pgdata:
Vorteile gegenüber Vagrant¶
Service-Isolierung, Geschwindigkeit (Sekunden statt Minuten), weniger Speicherverbrauch, näher an der Produktion. docker-compose erstellt ein isoliertes Netzwerk — Dienste sehen sich gegenseitig unter den Namen aus der YAML-Datei.
Konfiguration und Tipps¶
.env-Datei für Variablen. docker-compose.override.yml für lokale Anpassungen (in .gitignore). Verwenden Sie depends_on, aber implementieren Sie Retry-Logik in der Anwendung. Named Volumes für persistente Daten.
docker-compose ist ein Game Changer¶
Eine Datei definiert die gesamte Infrastruktur. Versioniert, reviewt, im Git geteilt. Wenn Sie Docker nutzen, ist docker-compose der logische nächste Schritt.
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns