Maintenant que nous avons notre fichier .env, il est temps de le connecter à notre fichier docker-compose.yml. C’est ce qu’on appelle l’interpolation des variables.
Comment ça fonctionne ?
Docker Compose va lire votre .env et remplacer automatiquement toutes les références ${VARIABLE} par leur valeur.
Exemple :
# fichier .env
DB_USER=root
DB_PASSWORD=supersecret
DB_NAME=monprojet
Dans votre docker-compose.yml :
services:
db:
image: mariadb:10.11
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
Résultat à l’exécution :
MYSQL_ROOT_PASSWORDserasupersecretMYSQL_DATABASEseramonprojetMYSQL_USERseraroot
Docker Compose interpolera toutes les variables présentes dans le fichier .env.
Bonnes pratiques d’interpolation
- Toujours fournir une valeur par défaut si nécessaire :
MYSQL_USER: ${DB_USER:-defaultuser}Ici, si DB_USER n’existe pas dans le .env, Docker utilisera defaultuser.
- Éviter les espaces autour du
=dans le.env. - Garder les noms cohérents entre
.envetdocker-compose.ymlpour ne pas se perdre.
Astuce pratique
Vous pouvez vérifier quelles variables sont prises en compte avec :
docker compose config
Cette commande affiche le fichier final interpolé, très utile pour déboguer vos variables.
📌 À retenir :
L’interpolation${VAR}permet de découpler la configuration du code. Vous pouvez changer vos mots de passe, ports ou noms de bases de données sans toucher au YAML, ce qui rend votre stack flexible et portable.