Passer des variables d'environnement au conteneur dans Docker

Isaac Tony 30 janvier 2023
  1. Utilisez les balises -e et -env Transmettez les variables d’environnement au conteneur dans Docker
  2. Utilisez la commande d’exportation pour transmettre des variables d’environnement au conteneur dans Docker
  3. Utiliser un fichier -env pour transmettre des variables d’environnement au conteneur dans Docker
Passer des variables d'environnement au conteneur dans Docker

Ce didacticiel présentera les méthodes permettant de transmettre des variables d’environnement au conteneur dans Docker.

Utilisez les balises -e et -env Transmettez les variables d’environnement au conteneur dans Docker

Nous allons commencer par voir comment nous pouvons créer des variables d’environnement et les transmettre à un conteneur. Nous allons commencer par extraire l’image que nous utiliserons du registre Docker à l’aide de la commande ci-dessous.

$ docker pull ubuntu~$ docker pull ubuntu

Production:

Using default tag: latest
latest: Pulling from library/ubuntu
08c01a0ec47e: Pull complete
Digest: sha256:669e010b58baf5beb2836b253c1fd5768333f0d1dbcb834f7c07a4dc93f474be
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Nous utiliserons la balise -e, la forme abrégée de -env, dont l’utilisation peut être vérifiée en exécutant la commande docker run -help dans le terminal. Cet argument nous permet de créer plusieurs paires clé-valeur de variables d’environnement à transmettre au conteneur.

Voici comment nous pouvons créer une seule variable d’environnement et la transmettre à un conteneur que nous avons créé à l’aide de l’image Ubuntu.

$ docker run -it -e DEMO=sample_variable ubuntu bash

Production:

root@3a20bc21d3c8:/# echo $DEMO
sample_variable

Nous pouvons également utiliser plusieurs balises -e pour créer des variables d’environnement en les enchaînant simplement avec la commande run lors de la création d’un nouveau conteneur, comme indiqué ci-dessous.

$ docker run -it -e DEMO1=sample_variable1 -e DEMO2=sample_variable2 ubuntu bash

Une fois que nous avons transmis ces deux variables d’environnement, nous pouvons accéder à leurs valeurs à l’aide des commandes ci-dessous. Nous avons nommé la variable un comme DEMO1, et nous pouvons accéder à sa valeur ci-dessous.

root@9eee00d7ab01:/# echo $DEMO1

Production:

sample_variable1

De même, nous pouvons également imprimer la variable deux, comme indiqué ici.

root@9eee00d7ab01:/# echo $DEMO2

Production:

sample_variable2

Utilisez la commande d’exportation pour transmettre des variables d’environnement au conteneur dans Docker

Alternativement, nous pouvons également éviter le chaînage sur les variables d’environnement en utilisant la commande export. Cette commande est un outil utilitaire intégré pour le shell bash Linux qui peut également être utilisé avec le WSL.

Cela nous permet de créer et de transmettre des variables d’environnement aux processus enfants sans affecter les variables préexistantes. Nous allons commencer par créer les variables d’environnement, comme indiqué ci-dessous.

isaac@DESKTOP-HV44HT6:~$ export MYSQL_USER=isaactonyloi
isaac@DESKTOP-HV44HT6:~$ export MYSQL_PASS=fakepassword

Une fois que nous avons créé les variables d’environnement, nous pouvons ensuite les transmettre à un conteneur que nous créons, comme indiqué ci-dessous.

$ docker run -it -e MYSQL_USER -e MYSQL_PASS ubuntu bash

Nous pouvons ensuite accéder et afficher les valeurs respectives des variables à l’aide de la commande echo command comme indiqué ci-dessous.

root@5b4dae06932d:/# echo $MYSQL_USER
isaactonyloi

Utiliser un fichier -env pour transmettre des variables d’environnement au conteneur dans Docker

Une meilleure approche qui vous donne plus d’espace pour déboguer consiste à utiliser un fichier de décomposition Docker à la place. Cela signifie que nous n’avons plus à transmettre directement les variables d’environnement lors du lancement de notre conteneur Docker.

Cette méthode signifie que nous devons créer un fichier externe .env qui contiendra nos variables d’environnement. Nous pouvons créer ce fichier dans notre répertoire personnel à l’aide de la commande Linux ci-dessous.

Cette commande opte pour l’éditeur Linux vi, créant notre liste de variables d’environnement.

$ vi env.list

Dans l’éditeur vi, nous allons créer les variables d’environnement sous forme de paires clé-valeur avec les clés en majuscules et leurs valeurs respectives dans une petite casse. Nous allons quitter, en sauvegardant la variable en appuyant sur les deux-points complets et en tapant la commande wq.

MYSQL_USER=isaactonyloi
MYSQL_PASS=fakepassword

wq

Nous pouvons utiliser la commande ls pour confirmer que le fichier env.list a été enregistré avec succès. Cela devrait renvoyer une liste de fichiers dans ce répertoire avec env.list parmi ceux répertoriés.

Nous pouvons également utiliser la commande cat pour afficher les entrées de cette liste, comme indiqué ci-dessous.

$ cat env.list

Production:

MYSQL_USER=isaactonyloi
MYSQL_PASS=fakepassword

Une fois que nous avons cela en place, nous pouvons maintenant exécuter l’image Ubuntu pour créer le nouveau conteneur et spécifier le chemin d’accès à l’endroit où nous avons stocké les variables pour les transmettre.

Le fichier env.list est stocké dans le répertoire home de cet exemple. Par conséquent, si le vôtre se trouve dans un autre répertoire, votre chemin peut sembler différent.

Nous devons exécuter la commande pour transmettre ces variables d’environnement au nouveau conteneur.

$ docker run -it --env-file ./env.list ubuntu bash

Nous pouvons vérifier que nous avons réussi à transmettre les variables d’environnement au conteneur en imprimant les variables comme indiqué ci-dessous.

/# echo $MYSQL_USER
/# echo $MYSQL_PASS

Production:

Isaactonyloi
fakepassword

Au lieu des méthodes précédentes, nous pouvons créer un fichier modèle contenant toutes les variables d’environnement que nous voulons transmettre. Cela nous permet de remplacer facilement les variables d’environnement créées dans ce fichier si nous souhaitons apporter des modifications.

Auteur: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn