Comprendre et configurer les variables d'environnement d'un Dockerfile

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Ce tutoriel vous guidera à travers les bases de l'utilisation des variables d'environnement dans un Dockerfile Docker. Vous apprendrez à définir, gérer et utiliser les variables d'environnement pour améliorer la flexibilité et la portabilité de vos applications conteneurisées. À la fin de cet article, vous aurez une bonne compréhension de la manière d'utiliser les variables d'environnement pour rationaliser vos flux de travail de développement et de déploiement Docker.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/run -.-> lab-413803{{"Comprendre et configurer les variables d'environnement d'un Dockerfile"}} docker/info -.-> lab-413803{{"Comprendre et configurer les variables d'environnement d'un Dockerfile"}} docker/version -.-> lab-413803{{"Comprendre et configurer les variables d'environnement d'un Dockerfile"}} docker/build -.-> lab-413803{{"Comprendre et configurer les variables d'environnement d'un Dockerfile"}} end

Comprendre les variables d'environnement Docker

Les variables d'environnement Docker sont une fonctionnalité puissante qui vous permet de personnaliser le comportement de vos conteneurs Docker. Elles offrent un moyen de transmettre des données de configuration à votre application s'exécutant à l'intérieur du conteneur, sans avoir à les coder en dur dans l'application elle-même. Cela rend votre application plus portable et plus facile à gérer, car vous pouvez simplement modifier les variables d'environnement sans avoir à modifier le code de l'application.

Les variables d'environnement dans Docker peuvent être utilisées pour stocker une grande variété d'informations, telles que :

  • Les détails de connexion à la base de données (par exemple, hôte, port, nom d'utilisateur, mot de passe)
  • Les clés API ou autres données sensibles
  • Les indicateurs de fonctionnalités (feature flags) ou les paramètres de configuration
  • Les chemins d'accès aux ressources externes (par exemple, fichiers journaux, répertoires temporaires)

En utilisant les variables d'environnement, vous pouvez facilement adapter vos conteneurs Docker à différents environnements (par exemple, développement, pré-production, production) sans avoir à reconstruire l'image.

graph TD A[Docker Container] --> B[Application] B --> C[Environment Variables] C --> D[Configuration Data]

Dans le diagramme ci-dessus, nous pouvons voir comment les variables d'environnement sont utilisées pour transmettre des données de configuration à l'application s'exécutant à l'intérieur du conteneur Docker.

Tableau 1 : Cas d'utilisation courants des variables d'environnement Docker

Cas d'utilisation Exemple
Connexion à la base de données DB_HOST, DB_PORT, DB_USER, DB_PASSWORD
Clés API API_KEY, API_SECRET
Indicateurs de fonctionnalités ENABLE_FEATURE_X, DISABLE_FEATURE_Y
Chemins d'accès aux ressources externes LOG_DIR, TEMP_DIR

En comprenant le rôle des variables d'environnement dans Docker, vous pouvez écrire des applications plus flexibles et maintenables qui peuvent être facilement déployées et configurées dans différents environnements.

Définir des variables d'environnement dans un Dockerfile

Pour définir des variables d'environnement dans un Dockerfile, vous pouvez utiliser l'instruction ENV. Cette instruction vous permet de définir une ou plusieurs variables d'environnement qui seront disponibles pour le conteneur lors de son exécution.

Voici un exemple de définition de variables d'environnement dans un Dockerfile :

## Set a single environment variable
ENV APP_ENV=production

## Set multiple environment variables
ENV DB_HOST=mysql DB_PORT=3306 DB_USER=myuser DB_PASSWORD=secret

Dans l'exemple ci-dessus, nous définissons d'abord une seule variable d'environnement APP_ENV avec la valeur production. Ensuite, nous définissons plusieurs variables d'environnement DB_HOST, DB_PORT, DB_USER et DB_PASSWORD.

Ces variables d'environnement peuvent ensuite être accédées et utilisées par l'application s'exécutant à l'intérieur du conteneur.

graph TD A[Dockerfile] --> B[ENV Instruction] B --> C[Environment Variables] C --> D[Container Runtime] D --> E[Application]

L'instruction ENV peut également être utilisée pour définir des valeurs par défaut pour les variables d'environnement, qui peuvent être remplacées lors de l'exécution en utilisant le drapeau --env ou -e lors de l'exécution du conteneur.

## Set a default value for the APP_ENV variable
ENV APP_ENV=development

Dans cet exemple, la variable APP_ENV sera définie sur development à moins qu'elle ne soit remplacée lors de l'exécution du conteneur.

Tableau 1 : Exemples d'instructions ENV dans un Dockerfile

Instruction Exemple
Variable unique ENV APP_ENV=production
Plusieurs variables ENV DB_HOST=mysql DB_PORT=3306 DB_USER=myuser DB_PASSWORD=secret
Valeur par défaut ENV APP_ENV=development

En définissant des variables d'environnement dans votre Dockerfile, vous pouvez rendre vos conteneurs Docker plus configurables et adaptables à différents environnements, les rendant ainsi plus faciles à déployer et à maintenir.

Gérer et utiliser les variables d'environnement

Accéder aux variables d'environnement dans les conteneurs

Une fois que vous avez défini des variables d'environnement dans votre Dockerfile, vous pouvez y accéder à l'intérieur du conteneur en cours d'exécution en utilisant la syntaxe standard du shell. Par exemple, dans un script Bash, vous pouvez accéder à la valeur de la variable d'environnement DB_HOST comme ceci :

echo "Database host: $DB_HOST"

Vous pouvez également utiliser des variables d'environnement dans votre code d'application, selon le langage de programmation et le framework que vous utilisez.

Remplacer les variables d'environnement lors de l'exécution

Lorsque vous exécutez un conteneur Docker, vous pouvez remplacer les variables d'environnement définies dans le Dockerfile en utilisant le drapeau --env ou -e. Cela vous permet de personnaliser facilement le comportement de votre conteneur sans avoir à reconstruire l'image.

docker run -e DB_HOST=192.168.1.100 -e DB_PASSWORD=newpassword myapp

Dans cet exemple, les variables d'environnement DB_HOST et DB_PASSWORD sont remplacées lors de l'exécution, prenant le pas sur les valeurs définies dans le Dockerfile.

Gérer les variables d'environnement avec Docker Compose

Si vous utilisez Docker Compose pour gérer votre application, vous pouvez définir des variables d'environnement dans la section environment de votre fichier docker-compose.yml. Cela vous permet de centraliser la configuration de toute votre pile d'application.

version: "3"
services:
  web:
    image: myapp
    environment:
      DB_HOST: mysql
      DB_PORT: 3306
      DB_USER: myuser
      DB_PASSWORD: secret
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: secret

Dans cet exemple, les variables d'environnement pour le service web sont définies dans la section environment, et le service mysql a également ses propres variables d'environnement définies.

graph TD A[Docker Compose] --> B[Environment Variables] B --> C[Docker Containers] C --> D[Applications]

En gérant les variables d'environnement de cette manière, vous pouvez facilement mettre à l'échelle votre application, remplacer des services et maintenir une configuration cohérente dans différents environnements.

Résumé

Dans ce tutoriel complet, vous avez appris l'importance des variables d'environnement dans un Dockerfile Docker. Vous avez exploré comment définir et gérer les variables d'environnement, ainsi que comment les utiliser efficacement dans vos applications conteneurisées. En maîtrisant les concepts des variables d'environnement dans un Dockerfile, vous pouvez désormais créer des solutions basées sur Docker plus flexibles, configurables et maintenables qui s'adaptent à différents environnements de déploiement. Cette connaissance vous permettra de développer des applications Docker robustes et évolutives qui répondent aux besoins changeants de votre organisation.