Docker Compose – Grundlagen
Dienste deklarativ
Sobald mehr als ein Container im Spiel ist, beschreibt man die Umgebung deklarativ in einer Datei – statt jeden Container einzeln von Hand zu starten. Das übernimmt Docker Compose.
Die compose.yaml
Compose liest standardmäßig eine compose.yaml (oder docker-compose.yml) im aktuellen Verzeichnis. Darin werden Services definiert:
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: mariadb:11
environment:
MARIADB_ROOT_PASSWORD: secret
MARIADB_DATABASE: app
Hinweis: Der früher übliche
version:-Eintrag ist mit Compose v2 überflüssig und gilt als veraltet – einfach weglassen.
Starten und stoppen
docker compose up -d # alle Dienste im Hintergrund starten
docker compose ps # Status ansehen
docker compose logs -f # Logs aller Dienste verfolgen
docker compose down # alles stoppen und aufräumen
Beachte: In Compose v2 heißt der Befehl docker compose (mit Leerzeichen) – das alte docker-compose (mit Bindestrich) ist der abgelöste v1-Client.
Ein Dienst, ein Name
Jeder Service ist unter seinem Namen im internen Netzwerk erreichbar. Der web-Container erreicht die Datenbank also einfach unter dem Hostnamen db – ohne IP-Adressen, ohne Handarbeit.
# Einen Befehl in einem Service ausführen
docker compose exec db mariadb -u root -p
Damit ist die Orchestrierung geklärt. Als Nächstes ein realistisches Setup aus mehreren Diensten.