Dans le cadre de développement personnel, j’ai voulu installer une base de données MySQL sous Docker dans un environnement Windows.

L’installation de Docker se fait via leur site internet principal, mais je vous conseille de passer par Docker Hub, qui vous permet de vous créer un espace dédiée pour vos dépôts d’images. A noter quand même que l’offre gratuite ne vous permet d’avoir qu’un seul dépôt privé (c’est à dire qu’il ne remontera pas dans les résultats de recherche du Hub).

Installation de MySQL

Pour récupérer MySQL et pour interagir avec depuis un outil graphique (comme MySQL Workbench par exemple), il suffit de ces deux lignes de commandes.

docker pull mysql
docker run --name DockerInstance -e MYSQL_ROOT_PASSWORD=my-secret-pw -d  -p 3306:3306 mysql:latest

Prenons le temps de détailler les paramètres utilisés :

  • -name : Il s’agit du nom de votre instance Mysql dans Docker.
  • -e MYSQL_ROOT_PASSWORD : On demande à Docker de créer une variable d’environnement s’appellant « MYSQL_ROOT_PASSWORD » et qui, bien évidemment, défini le mot de passe root de l’instance MySQL exécuté dans le container.
  • -d : demande à Docker de détacher le container pour le laisser s’exécuter en arrière plan et de nous renvoyer son identifiant.
  • -p 3306:3306 : Mapping de port, pour ouvrir le port 3306 de l’instance Docker vers le port 3306 de la machine locale (notre ordinateur).
  • mysql:lastest : Nom de l’image à exécuter avec le tag correspondant (ici en l’occurrence la dernière version du moteur SQL).

Après ça, vous devez pouvoir vous connecter à votre instance sans problème 🙂

Configuration de MySQL

L’ORM que j’utilise pour mes développements NodeJS n’est pas encore compatible avec la nouvelle politique de sécurité de MySQL, à savoir l’authentification par défaut avec le protocole « cache_sha2_password ». Pour que je puisse l’utiliser, il a fallu modifier la configuration de l’instance MySQL dans l’enveloppe Docker.

Comment on fait ça ?

Docker permet de faire le lien entre un système de fichier local et le système de fichier du container. Du coup, il est possible de créer un fichier de configuration MySQL qui sera lu par le moteur lors de son démarrage.

La commande permettant de faire le lien est :

docker run --name DockerInstance -v C:\temp\conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 3306:3306 mysql:latest

Qu’est ce qui change par rapport à la première commande ? L’ajout du paramètre -v qui permet de dire ici qu’on monte le répertoire « conf.d » situé sur le C: du poste vers le répertoire « conf.d » du container, qui est lu par le moteur MySQL. Le nom du répertoire local n’est pas forcément le même, vous pouvez mettre ce que vous voulez.

Pour info et historique, le contenu du fichier était le suivant :

[mysqld]
default-authentication-plugin=mysql_native_password
Catégories : ContainerTechs

0 commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.