Docker Compose ist ein Tool zur Definition und Verwaltung von Multi-Container-Docker-Anwendungen. Mit Docker Compose können Sie Anwendungen, die aus mehreren Containern bestehen, in einer einzigen YAML-Datei definieren und diese mit einfachen Befehlen starten, stoppen und verwalten.
Docker Compose kann einfach installiert werden, wenn Docker bereits auf dem System läuft.
Befehl:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-composeBefehl:
docker-compose --versionAusgabe:
docker-compose version 1.29.2, build 5becea4c
Die docker-compose.yml-Datei definiert die Dienste,
Netzwerke und Volumes, die für die Anwendung benötigt werden.
Beispiel: Einfache
docker-compose.yml-Datei
version: '3.1'
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: exampleErklärung: Diese Datei definiert zwei Dienste:
web und db. Der web-Dienst
verwendet das Nginx-Image und mappt den Host-Port 8080 auf den
Container-Port 80. Der db-Dienst verwendet das MySQL-Image
und setzt das Root-Passwort auf example.
Befehl:
docker-compose up -dErklärung: Dieser Befehl startet alle in der
docker-compose.yml-Datei definierten Dienste im
Hintergrund.
Befehl:
docker-compose downErklärung: Dieser Befehl stoppt alle laufenden Dienste und entfernt die zugehörigen Container.
Befehl:
docker-compose psAusgabe:
Name Command State Ports
----------------------------------------------------------------------------
myapp_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
myapp_web_1 nginx -g daemon off; Up 0.0.0.0:8080->80/tcp
Befehl:
docker-compose logsErklärung: Dieser Befehl zeigt die Logs aller Dienste an.
Datei: docker-compose.yml
version: '3.8'
services:
web:
build: ./web
ports:
- "8080:80"
volumes:
- ./web:/usr/share/nginx/html
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_USER: example
POSTGRES_PASSWORD: example
POSTGRES_DB: exampledb
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:Erklärung: Diese Datei definiert zwei Dienste:
web und db. Der web-Dienst wird
aus einem Dockerfile im Verzeichnis ./web erstellt und
verwendet Bind Mounts für die Webinhalte. Der db-Dienst
verwendet das PostgreSQL-Image und definiert Umgebungsvariablen für die
Datenbankkonfiguration. Ein Volume db-data wird erstellt,
um die Datenbankdaten zu persistieren.
Docker Compose ermöglicht es, Abhängigkeiten zwischen Diensten zu definieren, sodass Dienste in der richtigen Reihenfolge gestartet werden.
Beispiel:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: exampleErklärung: In diesem Beispiel wird der
web-Dienst erst gestartet, nachdem der
db-Dienst gestartet wurde.
Docker Compose ermöglicht das einfache Skalieren von Diensten, um mehrere Instanzen eines Dienstes auszuführen.
Befehl:
docker-compose up -d --scale web=3Erklärung: Dieser Befehl startet drei Instanzen des
web-Dienstes.
Docker Compose bietet eine leistungsstarke und benutzerfreundliche Möglichkeit, Multi-Container-Anwendungen zu definieren und zu verwalten. Durch die Verwendung einer einfachen YAML-Datei können Entwickler und Administratoren komplexe Anwendungsumgebungen mit mehreren Diensten effizient starten, stoppen und verwalten. Im nächsten Kapitel werden Best Practices für den Einsatz von Docker in der Produktion behandelt.