Was ist Docker Compose?

Dr. Rainer SawitzkiTrainer Cegos Integrata

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:

Code: Beispiel: WordPress und MySQL mit Docker Compose

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.

Docker für Anwendungsentwickler - Erstellen von Docker-Images
Docker-Container für Java-Applikationen

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.

Geschrieben von

Dr. Rainer Sawitzki

Nach seinem Studium der Physik und anschließender Promotion Wechsel in die IT-Branche. Seit mehr als 20 Jahren als Entwickler, Berater und Projektleiter vorwiegend im Bereich Java und JavaScript unterwegs. Parallel dazu in der Entwicklung und Durchführung von hochwertigen Seminaren für Cegos Integrata im Einsatz.
Erfahren Sie mehr
newsletter image

Unser Newsletter für Ihr Weiterkommen

IT, Personalentwicklung und Learning & Development

Jetzt anmelden