Docker-MySQL
Introduction
- est un système de gestion de base de données relationnelle
- est open source et gratuit
- est idéal pour les petites et les grandes applications
- est très rapide, fiable, évolutif et facile à utiliser
- est multiplateforme et conforme à la norme ANSI SQL
- a été publié pour la première fois en 1995
- est développé, distribué et pris en charge par Oracle Corporation
- porte le nom de la fille du co-fondateur Monty Widenius : My
Fonctionnement
Docker-compose
Pour faire tourner une database MySQL dans un conteneur la création d'un docker-compose.yml est nécessaire ou l'utilisation d'un docker run.
Hummm, comment le faire???
Ahhh, mais c'est simple, créer un fichier "docker compose.yml " dans votre folder et mettez ceci dedans.
version: "3.9"
services:
mysql:
image: mysql:5.7.36
hostname: db-mysql
container_name: db-mysql
#replace environment section
environment:
#celui-ci est le seul obligatoire
- MYSQL_ROOT_PASSWORD: root_assword
- MYSQL_USER: mon_user
- MYSQL_PASSWORD: user_password
- MYSQL_DATABASE: database_name
#expose le port de MySQL sinon il ne sera pas vu par la machine on appelle ceci le biding
ports:
- 3306:3306
Ainsi, en ligne de commande accéder à MySQL en tapant:
docker exec -it db-mysql bash
Ne vous découragerez pas je vous explique
- Le "docker exec" exécute une commande dans un conteneur en cours d'exécution.
- Le "-it" signifie fais le en mode interactive
- Le "db-mysql" est nom du conteneur
- Le "bash" à la fin signifie qu'on veut exécuter "db-mysql" en mode bash
Sachez que le "docker-compose" manipule les services, mais que docker lui seul manipule les containers.
Mais, perso, j'ai choisi d'installer sur vscode l'extension database qui me permet de me connecter et de manipuler MySQL avec une jolie interface plus d'info sur l'extension database.
Database extension après connexion à la base mysql
No kidding 😂 !! je ne me suis pas arretée là.
J'ai donc rajouté une interface web en utilisant adminer. Documentation juste 👉 ici.
Sinon voici un exemple de docker-compose avec adminer comme service.
adminer:
depends_on:
- mysql
image: adminer
restart: always
ports:
- 8080:8080
NB: on rajoute "depends*on:" car on veut qu'il attende que MySQL finisse de démarrer avant de se lancer.
Vous trouverez plus d'info sur docker hub.
Docker run
Alors j'aime bien le docker-compose, car ça nous évite de rappeler nos commandes ou bien de recopier tout le temps la commande. C'est aussi un moyen rapide de faire des modifications.
Mais ce n'est pas la seule méthode à utiliser pour initialiser un container MySQL, il y a la simple commande docker run
docker run --name=container_name --restart on-failure -d image_name:tag
En remplaçant les lettres par leurs valeurs, on obtient un truc pareil :
docker run -itd --name db-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root_assword -e MYSQL_USER=mon_user -e MYSQL_PASSWORD=user_password -e MYSQL_DATABASE=database_name mysql:5.7.36
Variables d'environnement
On ne va surtout pas tous les voir ici, mais je vous invite à régarder ici où vous en trouverez beaucoup.
Alors ceux qu'on a utilisés sont assez clairs, mais pour juste un peu parler, je dirais que chaque serve ou base de données bref chaque image docker peut contenir des variables d'environnements.
On peut donc trouver dans le docker hub de l'image ou bien sur le site officiel de la techno quel environnement on en a besoin.
On le spécifie dans docker run avec " -e, --env, --env-file " et dans un docker-compose par "environment"
Exemple de dokcer run:
docker run -e MYVAR1 --env MYVAR2=foo --env-file ./env.list ubuntu bash
Exemple de dokcer-compose:
environment:
- MYSQL_ROOT_PASSWORD: root_assword
- MYSQL_USER: mon_user
- MYSQL_PASSWORD: user_password
- MYSQL_DATABASE: database_name
Conclusion
Nous arrivons à la fin de notre tuto happy!!😁, je vous invite donc de voir ce article sur docker-compose.
Car, ceci n'est qu'une introduction au MySQL en utilisant les containers, pour plus d'informations visitez le site docker-hub ou sur le site de MySQL www.mysql.com .