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
.envpour 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.ymlavec 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
- Portabilité : le même
docker-compose.ymlpeut fonctionner en dev, test ou prod juste en changeant le.env. - Sécurité relative : les secrets ne sont plus codés en dur dans les fichiers YAML.
- Clarté : centralise tous les paramètres de configuration au même endroit.
- Maintenance facilitée : changement d’une variable = modification à un seul endroit.
Bonnes pratiques
- Ne jamais versionner les
.envcontenant des secrets dans un dépôt public. - Préférer un
.env.examplepour fournir un modèle sans les secrets. - Utiliser des noms explicites et cohérents pour les variables.
📌À retenir :
Le fichier.envest votre coffre-fort des réglages. Il permet de rendre votre stack flexible, portable et maintenable sans toucher au code.