Docker Compose ermöglicht es, Multi-Container-Anwendungen mit einem einzigen Befehl zu definieren und auszuführen. Ein praktischer Leitfaden vom Development-Setup bis zu Integrationstests.
Vom Dockerfile zur gesamten Anwendung¶
Docker hat das „Works on my machine”-Problem für einzelne Container gelöst. Docker Compose
geht weiter — es definiert den gesamten Application Stack in einer einzigen YAML-Datei. Webserver,
Datenbank, Cache, Message Broker — alles gestartet mit einem docker-compose up.
Compose ist ein zentrales Tool für die lokale Entwicklung und CI/CD-Pipelines. Jeder Entwickler erhält innerhalb von Sekunden eine identische Umgebung.
Aufbau von docker-compose.yml¶
Eine typische Webanwendung in Compose:
version: '2'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- ./src:/app/src
depends_on:
- db
- redis
environment:
DATABASE_URL: postgres://user:pass@db:5432/app
db:
image: postgres:9.5
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:3-alpine
volumes:
pgdata:
Services, Networks und Volumes — die drei Säulen der Compose-Konfiguration.
Development-Workflow mit Compose¶
Compose transformiert das Onboarding neuer Entwickler:
git clone+docker-compose up= eine funktionierende Umgebung- Hot Reload über Bind Mounts (
volumes) - Isolierte Datenbanken — keine Konflikte zwischen Projekten
docker-compose run web pytestfür Tests in derselben Umgebung
Für CI/CD-Pipelines genügt docker-compose -f docker-compose.test.yml up --abort-on-container-exit,
um Integrationstests auszuführen.
Best Practices und Tipps¶
Einige bewährte Regeln:
- Verwenden Sie eine
.env-Datei für Umgebungsvariablen - Definieren Sie Health Checks für zuverlässiges
depends\_on - Trennen Sie Produktions- und Entwicklungs-Override-Dateien (
docker-compose.override.yml) - Benennen Sie Volumes, um Daten zwischen Neustarts zu erhalten
- Verwenden Sie
docker-compose logs -f service\_namezum Debugging
Fazit: Der Standard für lokale Entwicklung¶
Docker Compose wird zum De-facto-Standard für lokale Entwicklungsumgebungen. Es beseitigt „Works on my machine”-Probleme, beschleunigt das Onboarding und gewährleistet Konsistenz zwischen Entwicklung und Produktion. Jedes Projekt sollte seine eigene docker-compose.yml haben.
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns