In den ersten beiden Teilen dieser Serie haben wir die Grundlagen von Docker kennengelernt und eigene Images mit Dockerfiles erstellt. Häufig bestehen Anwendungen jedoch nicht nur aus einem einzelnen Container, sondern aus mehreren Diensten, die zusammenarbeiten – etwa ein Webserver und eine Datenbank. Hier kommt Docker Compose ins Spiel.
Was ist Docker Compose?
Docker Compose ist ein Tool, mit dem sich mehrere Container und deren Konfigurationen in einer einzigen Datei definieren und gemeinsam starten lassen.
Vorteile:
- Alle Dienste werden mit einem einzigen Befehl gestartet
- Klare und strukturierte Konfiguration über YAML-Dateien
- Einfache Verwaltung komplexer Anwendungen
Installation von Docker Compose
Unter Linux wird Docker Compose meist separat installiert:
sudo apt install docker-compose
Unter Windows und macOS ist es in Docker Desktop bereits enthalten.
Die docker-compose.yml-Datei
Die Konfiguration erfolgt in einer Datei namens docker-compose.yml
.
Beispiel:
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: geheim
- web: Startet einen Nginx-Webserver auf Port 8080
- db: Startet eine MySQL-Datenbank mit Root-Passwort
Wichtige Befehle
Befehl | Bedeutung |
---|---|
docker-compose up | Startet alle Dienste im Vordergrund |
docker-compose up -d | Startet Dienste im Hintergrund (detached) |
docker-compose down | Stoppt und entfernt alle Dienste |
docker-compose logs | Zeigt die Logausgaben aller Container |
docker-compose ps | Listet alle laufenden Dienste auf |
Netzwerke und Volumes
Docker Compose erstellt automatisch ein eigenes Netzwerk für alle Dienste. Sie können über ihre Servicenamen miteinander kommunizieren.
Volumes sorgen dafür, dass Daten auch nach dem Neustart der Container erhalten bleiben:
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
Beispiel: Webserver mit Datenbank
Mit Docker Compose lässt sich eine komplette Entwicklungsumgebung in wenigen Zeilen erstellen.
Beispielsweise kann ein PHP-Webserver mit MySQL und phpMyAdmin in einer einzigen Datei definiert werden. Dies ermöglicht eine schnelle und reproduzierbare Bereitstellung.
Schreibe einen Kommentar