Variables d'environnement et Configuration dans Compose
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, il est possible d'éviter de coder en dur des valeurs telles que les ports, les tags d'image ou les identifiants directement dans le fichier docker-compose.yml. À la place, ces variables sont référencées 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 sur 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 le 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 en dehors du 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 constituent pas toujours la méthode la plus sécurisée pour gérer des informations sensibles telles que des mots de passe, des clés API ou des 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 permettent de 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 des secrets Docker si vous déployez avec Docker Swarm, ce qui permet de monter les secrets de manière 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 nommé 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 en dehors du fichier Compose et des variables d'environnement, réduisant ainsi le risque d'exposition accidentelle. Il est recommandé de toujours vérifier votre configuration et vos workflows afin de garantir la protection des secrets, et de ne jamais commettre 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
Can you explain how to override environment variables at runtime?
What are the best practices for keeping secrets secure in Docker Compose?
How do Docker secrets work with Compose files?
Awesome!
Completion rate improved to 7.14
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, il est possible d'éviter de coder en dur des valeurs telles que les ports, les tags d'image ou les identifiants directement dans le fichier docker-compose.yml. À la place, ces variables sont référencées 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 sur 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 le 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 en dehors du 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 constituent pas toujours la méthode la plus sécurisée pour gérer des informations sensibles telles que des mots de passe, des clés API ou des 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 permettent de 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 des secrets Docker si vous déployez avec Docker Swarm, ce qui permet de monter les secrets de manière 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 nommé 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 en dehors du fichier Compose et des variables d'environnement, réduisant ainsi le risque d'exposition accidentelle. Il est recommandé de toujours vérifier votre configuration et vos workflows afin de garantir la protection des secrets, et de ne jamais commettre de données sensibles dans le contrôle de version.
Merci pour vos commentaires !