📚 Docker pour les débutants : Le Chantier Naval

7.1 : Le fichier .env : Le coffre-fort des réglages

📄 Article ⏱ 5 ✅ Gratuit

Lorsque vous déployez des conteneurs Docker, vous allez souvent avoir besoin de paramétrer vos services : mots de passe, ports, noms de base de données, chemins de stockage, etc.
Modifier le code source ou les fichiers docker-compose.yml à chaque changement d’environnement est fastidieux et risqué. C’est là que le fichier .env entre en jeu !

Qu’est-ce qu’un fichier .env ?

  • C’est un fichier texte simple contenant des variables d’environnement au format clé=valeur.
  • Exemple de fichier .env pour une stack PHP/MariaDB :
# Configuration BDD
DB_HOST=db
DB_PORT=3306
DB_USER=root
DB_PASSWORD=monsecret
DB_NAME=monprojet# Configuration applicative
APP_ENV=development
APP_DEBUG=true
  • Ces variables sont ensuite interpolées dans votre docker-compose.yml avec la syntaxe ${VARIABLE}.

Exemple dans un docker-compose.yml :

services:
db:
image: mariadb:10.11
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}

php:
image: php:8.2-apache
environment:
APP_ENV: ${APP_ENV}
APP_DEBUG: ${APP_DEBUG}

Avantages du .env

  1. Portabilité : le même docker-compose.yml peut fonctionner en dev, test ou prod juste en changeant le .env.
  2. Sécurité relative : les secrets ne sont plus codés en dur dans les fichiers YAML.
  3. Clarté : centralise tous les paramètres de configuration au même endroit.
  4. Maintenance facilitée : changement d’une variable = modification à un seul endroit.

Bonnes pratiques

  • Ne jamais versionner les .env contenant des secrets dans un dépôt public.
  • Préférer un .env.example pour fournir un modèle sans les secrets.
  • Utiliser des noms explicites et cohérents pour les variables.

📌À retenir :
Le fichier .env est votre coffre-fort des réglages. Il permet de rendre votre stack flexible, portable et maintenable sans toucher au code.