Komplexe Anwendungen mit Docker Compose orchestrieren

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

BefehlBedeutung
docker-compose upStartet alle Dienste im Vordergrund
docker-compose up -dStartet Dienste im Hintergrund (detached)
docker-compose downStoppt und entfernt alle Dienste
docker-compose logsZeigt die Logausgaben aller Container
docker-compose psListet 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.


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert