04/12/2022

2. Variables d'environnement

Lu 1559 fois Licence Creative Commons

Démarrer un conteneur mysql:5.7 en foreground.
Le processus principal du conteneur reste t-il actif ?

Résultat potentiel:

[output][ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
[output]    You need to specify one of the following:
[output]    - MYSQL_ROOT_PASSWORD
[output]    - MYSQL_ALLOW_EMPTY_PASSWORD
[output]    - MYSQL_RANDOM_ROOT_PASSWORD

Définir des variables d'environnement

L'image de MySQL nécessite une variable d'environnement spécifiant comment se connecter au serveur. Par exemple, MYSQL_ROOT_PASSWORD permet de préciser le mot de passe de l'utilisateur root et MYSQL_DATABASE permet de créer une base de donnée au démarrage du conteneur (optionnel).
On indique les variables d'environnement avec l'option -e (ou --env):

docker run -d --rm --name db -p 3306:3306 -e MYSQL_ROOT_PASSWORD=docker -e MYSQL_DATABASE=aymdev mysql:5.7

Connectez-vous au serveur MySQL avec l'outil de votre choix puis vérifiez l'utilisateur connecté ainsi que l'existence de la base de donnée créée:

SELECT USER();
SHOW DATABASES;

Fichier de variables

Indiquer les variables d'environnement dans le terminal pose 2 problèmes:

  • la commande devient longue et difficile à lire
  • des données sensibles se retrouvent dans l'historique des commandes du terminal (.bash_history ou similaire)

On peut obtenir le même résultat en utilisant un fichier contenant les variables d'environnement.
Créez un fichier .env:

MYSQL_ROOT_PASSWORD=docker
MYSQL_DATABASE=aymdev

Puis démarrez un conteneur utilisant ce fichier avec l'option --env-file:

docker run -d --rm --name db -p 3306:3306 --env-file ./.env mysql:5.7

Enfin, reproduisez la manipulation précédente pour vérifier l'application des variables.