Zusammenführen und Ausgabe der Konfiguration aus mehreren Compose-Dateien
In diesem Schritt lernen Sie, wie Sie Konfigurationen aus mehreren Docker Compose-Dateien zusammenführen und die endgültige kombinierte Konfiguration ausgeben. Dies ist eine leistungsstarke Funktion, die es Ihnen ermöglicht, eine Basis-Konfiguration zu definieren und diese dann mit zusätzlichen Dateien zu überschreiben oder zu erweitern. Dies ist nützlich für die Verwaltung unterschiedlicher Umgebungen (z. B. Entwicklung, Staging, Produktion).
Wir werden weiterhin im Verzeichnis ~/project
arbeiten. Im vorherigen Schritt haben wir eine docker-compose.yaml
-Datei erstellt. Jetzt erstellen wir eine weitere Compose-Datei, um die Basis-Konfiguration zu erweitern. Wir nennen sie docker-compose.override.yaml
.
nano ~/project/docker-compose.override.yaml
Fügen Sie den folgenden Inhalt in die docker-compose.override.yaml
-Datei ein:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
Diese Überschreibungsdatei modifiziert den in docker-compose.yaml
definierten web
-Service. Sie ändert die Host-Port-Zuordnung von 80 auf 8080 und fügt eine Volume-Mount hinzu, um statischen HTML-Inhalt aus einem lokalen Verzeichnis namens html
zu servieren.
Speichern Sie die Datei, indem Sie Strg + X
, dann Y
und Enter
drücken.
Jetzt erstellen wir das html
-Verzeichnis und eine einfache index.html
-Datei darin.
mkdir ~/project/html
nano ~/project/html/index.html
Fügen Sie den folgenden Inhalt in ~/project/html/index.html
ein:
<h1>Hello from Nginx!</h1>
Speichern Sie die Datei, indem Sie Strg + X
, dann Y
und Enter
drücken.
Standardmäßig sucht Docker Compose automatisch nach docker-compose.yaml
und docker-compose.override.yaml
im aktuellen Verzeichnis und führt sie zusammen. Die Konfigurationen in der Überschreibungsdatei haben Vorrang.
Um die zusammengeführte Konfiguration zu sehen, stellen Sie sicher, dass Sie sich im Verzeichnis ~/project
befinden, und führen Sie erneut den Befehl docker-compose config
aus.
cd ~/project
docker-compose config
Sie sollten jetzt die kombinierte Konfiguration sehen, bei der der web
-Service die Port-Zuordnung 8080:80
und die Volume-Mount ./html:/usr/share/nginx/html
hat.
Sie können auch explizit angeben, welche Compose-Dateien Sie mit der Option -f
verwenden möchten. Die Reihenfolge, in der Sie die Dateien angeben, ist wichtig, da spätere Dateien frühere überschreiben.
Beispielsweise können Sie die folgenden Befehle ausführen, um docker-compose.yaml
und docker-compose.override.yaml
explizit zusammenzuführen:
docker-compose -f docker-compose.yaml -f docker-compose.override.yaml config
In diesem Fall wird die gleiche zusammengeführte Ausgabe erzeugt wie beim Ausführen von docker-compose config
ohne die Option -f
, da docker-compose.override.yaml
automatisch erkannt und nach docker-compose.yaml
zusammengeführt wird.