Variables d'Environnement et Configuration dans Compose
Glissez pour afficher le menu
Utilisation des variables d'environnement dans docker-compose.yml
Les variables d'environnement permettent de créer des configurations Docker Compose flexibles et réutilisables. En définissant des variables, vous évitez de coder en dur des valeurs telles que les ports, les tags d'image ou les identifiants directement dans votre fichier docker-compose.yml. À la place, vous référencez ces variables, et Docker Compose substitue leurs valeurs lors de l'exécution. Cette méthode est particulièrement utile lors du déploiement d'une même application dans différents environnements, comme le développement, les tests ou la production.
Pour définir et utiliser des variables d'environnement dans votre fichier Compose, suivez ces étapes :
- Stocker les variables d'environnement dans un fichier
.envsitué dans le même répertoire que votredocker-compose.yml; - Référencer les variables dans votre fichier Compose en utilisant la syntaxe
${VARIABLE_NAME}; - Remplacer les variables en les passant directement dans le shell ou via votre pipeline CI/CD.
Supposons que vous souhaitiez configurer le mot de passe de la base de données et le port de l'application à l'aide de variables d'environnement. Créez un fichier .env contenant :
DB_PASSWORD=supersecret
APP_PORT=8080
Dans votre docker-compose.yml, référencez ces variables comme suit :
version: "3.8"
services:
web:
image: myapp:latest
ports:
- "${APP_PORT}:80"
environment:
- DB_PASSWORD=${DB_PASSWORD}
Lorsque vous exécutez docker-compose up, Docker Compose substituera les valeurs du fichier .env dans la configuration. Cette méthode permet de garder les données sensibles ou spécifiques à l'environnement hors de votre fichier Compose et rend votre configuration plus portable.
Gestion des secrets et des données sensibles dans les fichiers Compose
Bien que les variables d'environnement soient pratiques, elles ne sont pas toujours la méthode la plus sécurisée pour gérer des informations sensibles telles que les mots de passe, les clés API ou les certificats. Les variables d'environnement peuvent parfois être exposées via les journaux, les listes de processus ou le contrôle de version si elles ne sont pas manipulées avec précaution. Pour renforcer la sécurité, plusieurs techniques existent pour gérer les secrets dans Docker Compose :
- Stocker les valeurs sensibles dans un fichier
.envséparé et s'assurer que ce fichier est exclu du contrôle de version via.gitignore; - Utiliser la prise en charge de Docker secrets de Docker Compose si vous déployez avec Docker Swarm, ce qui permet de monter les secrets de façon sécurisée comme fichiers dans les conteneurs ;
- Référencer les secrets comme fichiers sur l'hôte et les monter dans le conteneur à l'aide de la clé
volumesdans votre fichier Compose.
Exemple : Pour éviter d'exposer un mot de passe de base de données, stockez-le dans un fichier appelé db_password.txt et montez-le dans le conteneur :
services:
db:
image: postgres:latest
volumes:
- ./db_password.txt:/run/secrets/db_password
environment:
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
Cette méthode permet de garder le secret réel hors du fichier Compose et des variables d'environnement, réduisant ainsi le risque d'exposition accidentelle. Vérifiez toujours votre configuration et vos workflows pour garantir la protection des secrets, et ne commettez jamais de données sensibles dans le contrôle de version.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion