CodeGym /Cours /Docker SELF /Variables d'environnement dans Docker Compose

Variables d'environnement dans Docker Compose

Docker SELF
Niveau 16 , Leçon 0
Disponible

6.1 Bases des variables d'environnement

Les variables d'environnement jouent un rôle important dans la configuration des applications, permettant de modifier dynamiquement le comportement et les paramètres des services sans changer le code. Docker Compose prend en charge l'utilisation de variables d'environnement pour configurer les conteneurs, offrant ainsi flexibilité et facilité de gestion de la configuration.

L'une des façons les plus pratiques de gérer les variables d'environnement est d'utiliser des fichiers .env. Dans cette conférence, nous allons examiner en détail comment utiliser les variables d'environnement dans Docker Compose, y compris la création et l'utilisation des fichiers .env.

Bases des variables d'environnement dans Docker Compose

Les variables d'environnement peuvent être utilisées dans le fichier compose.yaml pour paramétrer les configurations. Ces variables peuvent être définies dans un fichier .env, dans le fichier compose.yaml lui-même, ou transmises directement via la ligne de commande.

Exemple d'utilisation de variables d'environnement dans compose.yaml :

Dans cet exemple, les variables NGINX_VERSION et HOST_PORT sont utilisées, et leurs valeurs peuvent être spécifiées dans un fichier .env ou via la ligne de commande.

Yaml

version: '3.8'

services:
  web:
    image: nginx:${NGINX_VERSION}
    ports:
      - "${HOST_PORT}:80"

6.2 Utilisation des fichiers .env

1. Création d'un fichier .env

Le fichier .env est placé dans le même répertoire que compose.yaml et contient des paires "clé-valeur" qui définissent les variables d'environnement. Chaque variable est indiquée sur une nouvelle ligne.

Exemple de fichier .env :

.env

NGINX_VERSION=latest
HOST_PORT=8080
DB_USER=admin
DB_PASSWORD=secret

2. Intégration du fichier .env avec Docker Compose

Docker Compose charge automatiquement les variables depuis le fichier .env s'il se trouve dans le même répertoire que compose.yaml.

Exemple de fichier compose.yaml utilisant des variables d'environnement :

Dans cet exemple, les variables NGINX_VERSION, HOST_PORT, DB_USER et DB_PASSWORD sont tirées du fichier .env.

Yaml

version: '3.8'

services:
  web:
    image: nginx:${NGINX_VERSION}
    ports:
      - "${HOST_PORT}:80"
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}

6.3 Transmission des variables

Transmission des variables via la ligne de commande

Tu peux transmettre des variables d'environnement directement via la ligne de commande en utilisant la commande export dans les systèmes de type Unix ou avec le paramètre --env-file dans Docker Compose.

Exemple d'utilisation de export :

Terminal

export NGINX_VERSION=latest
export HOST_PORT=8080
docker compose up

Exemple d'utilisation de --env-file :

Tu peux spécifier un fichier alternatif avec des variables d'environnement en utilisant le paramètre --env-file.

Terminal

docker compose --env-file .env.dev up

Utilisation des variables d'environnement intégrées dans Docker Compose

Docker Compose supporte des variables d'environnement intégrées, comme ${PWD}, qui représentent le répertoire de travail actuel.

Exemple :

Yaml

version: '3.8'

services:
  app:
    image: myapp:latest
    volumes:
      - ${PWD}/app:/app

6.4 Exemples pratiques

Exemples pratiques de l'utilisation des variables d'environnement :

Exemple 1 : Configuration d'un serveur web et d'une base de données

Crée un fichier .env avec des paramètres pour le serveur web et la base de données :

.env

NGINX_VERSION=1.19.3
HOST_PORT=8080
DB_USER=myuser
DB_PASSWORD=mypassword

Crée un fichier compose.yaml qui utilise ces variables :

Yaml

version: '3.8'

services:
  web:
    image: nginx:${NGINX_VERSION}
    ports:
      - "${HOST_PORT}:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - postgres-data:/var/lib/postgresql/data

volumes:
  postgres-data:

Lance Docker Compose :

Terminal

docker compose up

Exemple 2 : Séparation des environnements pour le développement et la production

Crée deux fichiers .env pour différents environnements : .env.dev et .env.prod.

Fichier .env.dev :

.env

NGINX_VERSION=latest
HOST_PORT=8080
DB_USER=devuser
DB_PASSWORD=devpassword

Fichier .env.prod :

.env

NGINX_VERSION=1.19.3
HOST_PORT=80
DB_USER=produser
DB_PASSWORD=prodpassword

Crée un fichier compose.yaml qui utilise les variables de ces fichiers :

Yaml

version: '3.8'

services:
  web:
    image: nginx:${NGINX_VERSION}
    ports:
      - "${HOST_PORT}:80"
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - postgres-data:/var/lib/postgresql/data

volumes:
  postgres-data:

Lance Docker Compose pour le développement :

Terminal

docker compose --env-file .env.dev up

Lance Docker Compose pour la production :

Terminal

docker compose --env-file .env.prod up
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION