Erweiterte Compose-Funktionen und Konfiguration
Während die grundlegende Compose-Dateistruktur und -Befehle leistungsstark sind, bietet Docker Compose auch eine Reihe erweiterter Funktionen und Konfigurationsoptionen, um komplexere und robustere Anwendungen zu erstellen.
Umgebungsvariablen und Geheimnisse
Sie können Umgebungsvariablen verwenden, um Konfigurationseinstellungen an Ihre Services zu übergeben. Docker Compose unterstützt sowohl Umgebungsvariablen zur Buildzeit als auch zur Laufzeit, die auf Service- oder globaler Ebene definiert werden können.
Zusätzlich können Sie Docker Secrets verwenden, um vertrauliche Informationen wie Datenbankpasswörter oder API-Schlüssel sicher zu speichern und Ihren Services zugänglich zu machen.
version: "3"
services:
web:
image: myapp/web
environment:
- DATABASE_URL=mysql://root:${DB_PASSWORD}@db/myapp
secrets:
- db-password
secrets:
db-password:
file: ./db-password.txt
Abhängigkeitsverwaltung und Health Checks
Docker Compose ermöglicht es Ihnen, Service-Abhängigkeiten zu definieren, um sicherzustellen, dass Services in der richtigen Reihenfolge gestartet werden und dass abhängige Services gesund sind, bevor andere Services gestartet werden.
Sie können auch Health Checks für Ihre Services konfigurieren, die Compose ermöglichen, den Zustand Ihrer Container zu überwachen und entsprechende Aktionen auszuführen, z. B. das Neustarten ungesunder Container.
version: "3"
services:
web:
image: myapp/web
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 5
db:
image: mysql:5.7
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 30s
timeout: 10s
retries: 5
Netzwerk und Service-Entdeckung
Docker Compose erstellt automatisch ein Standardnetzwerk für Ihre Anwendung, aber Sie können auch benutzerdefinierte Netzwerke definieren und die Netzwerkkonfiguration für Ihre Services steuern.
Zusätzlich bietet Compose eine integrierte Service-Entdeckung, die es Ihren Services ermöglicht, sich mithilfe der in der Compose-Datei definierten Service-Namen zu finden und miteinander zu kommunizieren.
version: "3"
services:
web:
image: myapp/web
networks:
- frontend
environment:
- DB_HOST=db
db:
image: mysql:5.7
networks:
- backend
networks:
frontend:
backend:
Durch die Nutzung dieser erweiterten Funktionen können Sie komplexere, robustere und skalierbare Docker Compose-Anwendungen erstellen, die den Anforderungen Ihres Unternehmens entsprechen.