Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Variables d'environnement et Configuration dans Compose | Travail avec Docker Compose
Docker Essentials

bookVariables 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 .env situé dans le même répertoire que votre docker-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 .env sé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é volumes dans 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.

question mark

Quel est l'avantage principal de l'utilisation des variables d'environnement dans un fichier Docker Compose ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 4

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

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

bookVariables 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 .env situé dans le même répertoire que votre docker-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 .env sé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é volumes dans 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.

question mark

Quel est l'avantage principal de l'utilisation des variables d'environnement dans un fichier Docker Compose ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 4
some-alt