Docker Compose Grundlagen
Einführung in Docker Compose
Docker Compose ist ein leistungsstarkes Werkzeug zur Container-Orchestrierung, das Entwicklern ermöglicht, Multi-Container-Anwendungen über eine einzige Konfigurationsdatei zu definieren und zu verwalten. Es vereinfacht den Prozess der Ausführung komplexer Anwendungsarchitekturen, indem es Ihnen erlaubt, Services, Netzwerke und Volumes deklarativ zu beschreiben.
Kernkonzepte und Architektur
Docker Compose verwendet YAML-Dateien zur Konfiguration von Anwendungsservices und bietet einen optimierten Ansatz zur Konfiguration von Container-Services. Die primäre Konfigurationsdatei wird typischerweise docker-compose.yml
genannt.
graph TD
A[Docker Compose] --> B[YAML-Konfiguration]
B --> C[Service-Definitionen]
B --> D[Netzwerkeinstellungen]
B --> E[Volume-Zuordnungen]
Struktur der Konfigurationsdatei
Eine typische Docker Compose-Konfiguration umfasst wichtige Elemente:
Element |
Beschreibung |
Beispiel |
version |
Compose-Dateiversion |
version: '3.8' |
services |
Container-Definitionen |
Mehrere Service-Konfigurationen |
networks |
Benutzerdefinierte Netzwerkeinstellungen |
Bridge-, Host-Netzwerke |
volumes |
Persistente Datenspeicherung |
Benannte oder host-gemountte Volumes |
Praktisches Beispiel: Webanwendungsaufbau
Hier ist eine umfassende Docker Compose-Konfiguration für eine typische Webanwendung:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./website:/usr/share/nginx/html
database:
image: postgres:13
environment:
POSTGRES_PASSWORD: secretpassword
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
Befehle der Kommandozeile
Wichtige Docker Compose-Befehle zur Verwaltung von Multi-Container-Anwendungen:
## Starten der in docker-compose.yml definierten Services
docker-compose up -d
## Stoppen und Entfernen von Containern
docker-compose down
## Anzeigen der laufenden Container
docker-compose ps
## Anzeigen der Service-Logs
docker-compose logs web
Verwaltung von Service-Abhängigkeiten
Docker Compose ermöglicht die Definition von Service-Abhängigkeiten zur Steuerung der Startsequenz:
services:
web:
depends_on:
- database
restart: on-failure
Diese Konfiguration stellt sicher, dass der Datenbank-Service vor dem Web-Service gestartet wird, mit automatischen Neustartfunktionen.