Was ist Docker Compose?
Docker Compose ist ein Werkzeug, das die Definition und Verwaltung mehrerer miteinander verlinkter Docker-Container vereinfacht. Während ein einzelner Container früher über den docker create-Befehl und eine Vielzahl an Parametern erstellt wurde, wird dies bei komplexen Anwendungsarchitekturen schnell unübersichtlich. Mit Docker Compose wird diese Herausforderung durch die Nutzung einer einfach strukturierten YAML-Datei gemeistert, die alle notwendigen Container-Konfigurationen definiert.
Docker Compose ist ideal für Anwendungen, die aus mehreren, voneinander abhängigen Containern bestehen. Dies kann zum Beispiel eine Webanwendung mit einem Webserver, einer Datenbank und einem Cache-Service sein.
Vorteile von Docker Compose
- Vereinfachte Container-Verwaltung: Alle Container und ihre Abhängigkeiten werden in einer einzigen Datei definiert, was die Verwaltung deutlich übersichtlicher macht.
- Automatisierung: Mit nur einem Befehl (docker-compose up) können Sie eine komplette, vernetzte Containerlandschaft starten.
- Standardisiertes Format: Docker Compose verwendet YAML als Dateiformat, was einfach zu lesen und zu verstehen ist.
Beispiel: WordPress und MySQL mit Docker Compose
Schauen wir uns an, wie man eine WordPress-Webseite und eine MySQL-Datenbank mithilfe von Docker Compose aufsetzt:
Was passiert in dieser Datei?
- Ein MySQL-Container wird erstellt, der das Image mysql:5.7 verwendet und ein Volume für persistente Daten (db_data) anlegt.
- Ein WordPress-Container wird erstellt, der das Image wordpress:latest verwendet und über depends_on an den MySQL-Container gebunden ist. Dies ermöglicht die Kommunikation zwischen den Containern über ein gemeinsames Netzwerk.
- Beide Container nutzen Umgebungsvariablen, um ihre Konfigurationen (wie Datenbankname, Benutzername und Passwort) zu setzen.
Installation von Docker Compose
Um Docker Compose zu installieren, führen Sie folgende Schritte aus (für Linux-Betriebssysteme, wie z.B. SLES 12):
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Für eine komfortablere Nutzung können Sie die Bash-Completion installieren:
curl -L https://raw.githubusercontent.com/docker/compose/1.21.2/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
Mit dem Befehl docker-compose -v überprüfen Sie die Installation.
Arbeitsweise von Docker Compose
Docker Compose ist keine Erweiterung der Docker-Engine, sondern ein Generator für Docker-Befehle auf Basis der YAML-Datei. Der Befehl docker-compose up erstellt und startet alle Container, die in der docker-compose.yml definiert sind. Mit docker-compose down werden diese Container wieder entfernt.
Wichtige Befehle:
- docker-compose up: Startet die in der YAML-Datei definierten Container.
- docker-compose down: Stoppt und entfernt die Container.
- docker-compose start und docker-compose stop: Startet und stoppt bereits erstellte Container, ohne sie zu löschen.
Docker Compose im Build-Prozess
In der agilen Softwareentwicklung kann Docker Compose auch direkt in den Build-Prozess integriert werden. Die docker-compose.yml kann ein Dockerfile referenzieren, das vor dem Start der Container ein neues Image erstellt. Dies ist besonders hilfreich, um die aktuellste Version der Anwendung während der Entwicklungsphase kontinuierlich zu testen.
Fazit: Warum Docker Compose unverzichtbar ist
Docker Compose vereinfacht die Verwaltung und das Zusammenspiel mehrerer Container in einer komplexen Anwendung. Es ist ein unverzichtbares Werkzeug, wenn Sie Ihre Docker-Umgebung effizient organisieren und orchestrieren möchten. Durch die klare Struktur und einfache Bedienung mit nur wenigen Befehlen bietet Docker Compose eine Lösung, um sowohl in der Entwicklung als auch in der Produktion eine stabile, skalierbare und wiederholbare Container-Umgebung zu betreiben.