Fusionner et afficher la configuration à partir de plusieurs fichiers Compose
Dans cette étape, vous apprendrez à fusionner les configurations de plusieurs fichiers Docker Compose et à afficher la configuration finale combinée. Il s'agit d'une fonctionnalité puissante qui vous permet de définir une configuration de base, puis de la remplacer ou de l'étendre avec des fichiers supplémentaires. Cela est utile pour gérer différents environnements (par exemple, développement, préproduction, production).
Nous continuerons à travailler dans le répertoire ~/project
. Dans l'étape précédente, nous avons créé un fichier docker-compose.yaml
. Maintenant, créons un autre fichier Compose pour étendre la configuration de base. Nous l'appellerons docker-compose.override.yaml
.
nano ~/project/docker-compose.override.yaml
Collez le contenu suivant dans le fichier docker-compose.override.yaml
:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
Ce fichier de substitution modifie le service web
défini dans docker-compose.yaml
. Il change le mappage de port hôte de 80 à 8080 et ajoute un montage de volume pour servir le contenu HTML statique depuis un répertoire local nommé html
.
Enregistrez le fichier en appuyant sur Ctrl + X
, puis Y
, et Entrée
.
Maintenant, créons le répertoire html
et un simple fichier index.html
à l'intérieur.
mkdir ~/project/html
nano ~/project/html/index.html
Collez le contenu suivant dans ~/project/html/index.html
:
<h1>Hello from Nginx!</h1>
Enregistrez le fichier en appuyant sur Ctrl + X
, puis Y
, et Entrée
.
Par défaut, Docker Compose recherche automatiquement docker-compose.yaml
et docker-compose.override.yaml
dans le répertoire actuel et les fusionne. Les configurations du fichier de substitution ont la priorité.
Pour voir la configuration fusionnée, assurez-vous d'être dans le répertoire ~/project
et exécutez à nouveau la commande docker-compose config
.
cd ~/project
docker-compose config
Vous devriez maintenant voir la configuration combinée, où le service web
a le mappage de port 8080:80
et le montage de volume ./html:/usr/share/nginx/html
.
Vous pouvez également spécifier explicitement quels fichiers Compose utiliser avec l'option -f
. L'ordre dans lequel vous spécifiez les fichiers est important, car les fichiers suivants remplacent les précédents.
Par exemple, pour fusionner explicitement docker-compose.yaml
et docker-compose.override.yaml
, vous pouvez exécuter :
docker-compose -f docker-compose.yaml -f docker-compose.override.yaml config
Cela produira la même sortie fusionnée que l'exécution de docker-compose config
sans l'option -f
dans ce cas, car docker-compose.override.yaml
est automatiquement détecté et fusionné après docker-compose.yaml
.