Skip to content

Configurer une application conteneurisée

Analogie : Une commande de restauration à livrer.
La fiche du client affiche des informations qui lui sont spécifiques.
Par exemple son adresse, pas d’anchois dans les pizzas, intolérance au Gluten. Pour une même commande, le résultat sera différent car le contexte est différent.

Les variables d’environnement UNIX sont des variables dont les valeurs sont définies en dehors du code d’une application.

Les variables d’environnement sont constituées de paires de noms et de valeurs, et vous pouvez en créer autant que vous le souhaitez pour qu’elles soient disponibles à titre de référence à un moment donné.

Tout process a généralement des variables d’environnement.

Terminal window
env
sudo cat /proc/self/environ | tr "\0" "\n"

Avancé : En remplaçant self par un pid vous pouvez voir les variables d’environnement de tout process.

Les variables d’environnement sont des variables “shell”, elles ont toujours la forme

Terminal window
VAR=<value>

On les crée avec la commande shell export et la commande env sert à les afficher et les gérer.

Terminal window
env -i sh -c "env"
env -i sh -c "export VAR=VALUE; printenv"

Les variables d’environnement sont une façon recommandée de configurer vos applications Docker.

Elles permettent une configuration “au runtime”.

Terminal window
ENV <key>=<value> <key2>=<value2>
ENV <key> <value>

*On peut utiliser des variables d’environnement dans les Dockerfiles. La syntaxe est ${...}.

Exemple :

FROM busybox
ENV DEST=/opt
WORKDIR ${DEST} # WORKDIR /opt
ADD . $DEST # ADD . /opt
COPY \$DEST /srv # COPY $DEST /srv

C’est un bon moyen de définir une seule fois une information redondante dans le Dockerfile (ex: un tag).

Se référer au mode d’emploi pour la logique plus précise de fonctionnement des variables.

On peut également définir les variables d’environnement en ligne de commande.

Terminal window
docker run --env VAR=VALUE ubuntu env

Une fois admis qu’il faut utiliser des variables d’environnement pour configurer un service, il faut l’intégrer aux applications.

Absolument tous les langages de programmation offrent des moyens très simples de lire ces variables.

En PHP, vous pouvez accéder aux variables d’environnement à l’aide de la fonction getenv().

$maVar = getenv('MA_VAR');

En Python, vous pouvez accéder aux variables d’environnement à l’aide du module os.

import os
maVar = os.environ.get('MA_VAR')

En Java, vous pouvez accéder aux variables d’environnement à l’aide de la classe System.

String myVar = System.getenv("MY_VAR");

Dans Node.js, vous pouvez accéder aux variables d’environnement à l’aide de l’objet process.env.

const myVar = process.env.MY_VAR;