Compose
Docker Compose ist ein Tool zur Definition und Ausführung von Multi-Container-Anwendungen. Es ist der Schlüssel für eine optimierte und effiziente Entwicklung und Bereitstellung.
Compose vereinfacht die Steuerung deines gesamten Application Stacks, indem es die Verwaltung von Diensten, Netzwerken und Volumes in einer einzigen, verständlichen YAML-Konfigurationsdatei erleichtert. Mit einem einzigen Befehl erstellst und startest du dann alle Dienste aus deiner Konfigurationsdatei.
Services
Services sind die zentralen Bausteine von Docker Compose. Jeder Service stellt eine containerisierte Anwendung oder Komponente dar.
services:
service-name:
# Konfiguration des ServicesImages und Build
In einem Service kann der Container entweder von einem Image kommen oder aus einem Dockerfile gebildet werden.
Build
services:
app:
build:
context: ./app
dockerfile: Dockerfile # Dockerfile name (optional if named 'Dockerfile')
args:
- NODE_ENV=production
- VERSION=1.0.0
target: productionKonfiguration des Containers
Wir können den Container noch weiter konfigurieren.
Restart Policy
Mit der Restart Policy legen wir fest, wann ein Container neugestartet werden soll.
no: Wird nie neugestartetalways: Container wird immer neugestartet, wenn er gestoppt wirdon-failure: Container wird nur neugestartet, wenn es einen Fehler gabunless-stopped: Container wird immer neugestartet, ausser er wird manuell gestoppt
Port Mapping
Das Port Mapping kann entweder intern oder auch extern erfolgen.
Umgebungsvariablen
Über Umgebungsvariablen können wir beispielsweise Variablen setzen.
Abhängigkeiten
Mit dem Property depends_on können wir Abhängigkeiten zwischen den einzelnen Services definieren.
Health Checks
Netzwerke
Netzwerke ermöglichen die Kommunikation zwischen Diensten und bieten Isolierung. Docker Compose erstellt automatisch ein Standardnetzwerk, aber du kannst benutzerdefinierte Netzwerke für eine bessere Kontrolle definieren.
Standardnetzwerk
Wenn du keine Netzwerke definierst, dann macht Docker Compose Folgendes:
Erstellt ein Standard-Bridge-Netzwerk mit dem Namen
{project_name}_defaultVerbindet alle Services zu diesem Netzwerk
Services können mit ihren jeweiligen Servicenamen untereinander kommunizieren
Benutzerdefiniertes Netzwerk
Volumes
Volumes bieten persistenten Datenspeicher, der Neustarts und Entfernungen von Containern übersteht. Sie sind unverzichtbar für Datenbanken, Datei-Uploads, Protokolle und alle Daten, die erhalten bleiben müssen.
Secrets
Secrets bieten einen sicheren Speicher für sensible Daten wie Kennwörter, API-Schlüssel, Zertifikate und andere vertrauliche Informationen, die Container zur Laufzeit benötigen.
Beispiel
Last updated