Environnement du conteneur
Variable d'environnements
Un autre mécanisme très intéressant avec Docker, est de pouvoir positionner des variables d'environnement dans le conteneur. Ces variables seront donc accessibles pour le processus qui est lancé, ce qui est très pratique si l'on veut passer de la configuration à notre conteneur.
L'utilisation des variables d'environnement pour configurer une application dans un conteneur est d'ailleurs une bonne pratique à adopter et fait partie des recommandation du 12factor app
Pour cela on utilise simplement l'option -e VARIABLE="valeur"
lors du démarrage du conteneur. On peut lister les variables d'environnement dans un conteneur pour vérifier que la variable qui est passée se retrouve bien dans notre conteneur :
$ docker run -it -e TEXT="Bonjour" debian env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=4989de4edf56
TERM=xterm
TEXT=Bonjour
HOME=/root
Mise en pratique
Le cas d'utilisation le plus courant est la configuration d'un processus à partir de variables d'environnements. En reprenant la documentation de l'image de PostgreSQL utilisée précédemment on remarque qu'il est possible de créer automatiquement une base de donnée avec un utilisateur à l'aide des variables suivantes :
POSTGRES_DB
: nom de la base de donnée à créerPOSTGRES_USER
: nom de l'utilisateur à créer ayant les accès sur la base de donnéesPOSTGRES_PASSWORD
: mot de passe de l'utilisateur
Question
À l'aide des informations précédentes, donnez la commande complète permettant de démarrer un conteneur PostgreSQL en créant une base de donnée picasoft avec un utilisateur picasoft et le mot de passe thisissimplepassword.
Solution
On peut utiliser la commande :
docker run -d --name postgres -e POSTGRES_DB=picasoft -e POSTGRES_USER=picasoft -e POSTGRES_PASSWORD=thisissimplepassword postgres
Question
Donnez une commande pour valider que l'on peut se connecter à la base de donnée avec l'utilisateur picasoft depuis le conteneur.
Solution
docker exec -it postgres psql -U picasoft