📚 Docker pour les débutants : Le Chantier Naval

7.2 : Interpolation : Utiliser ${DB_PASSWORD} dans le YAML

📄 Article ⏱ 5 ✅ Gratuit

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_PASSWORD sera supersecret
  • MYSQL_DATABASE sera monprojet
  • MYSQL_USER sera root

Docker Compose interpolera toutes les variables présentes dans le fichier .env.

Bonnes pratiques d’interpolation

  1. 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.

  1. Éviter les espaces autour du = dans le .env.
  2. Garder les noms cohérents entre .env et docker-compose.yml pour 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.