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.