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.
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.



