La base de données MySQL est un outil open source pour stocker et classfier des données, en provenance d'un site web par exemple.
MySQL sera lancée grâce à docker-compose.yml, définit comme suit:
version: '3'
services:
db:
image: mysql:latest
container_name: database
environment:
- MYSQL_ROOT_PASSWORD=<mot_de_passe_root>
volumes:
- /chemin/ou/se/trouve/le/fichier/databases.sql:/docker-entrypoint-initdb.d/databases.sql
- db_data:/var/lib/mysql
ports:
- 3306:3306
volumes:
dbdata:
Ce fichier docker-compose définit un service appelé "db" qui exécute la version latest de MySQL avec la commande : mysql:latest. L'image est récupéré sur le docker hub.
Le service une fois lancé sera nommé "database".
La variable d'environnement :
MYSQL_ROOT_PASSWORD définit le mot de passe root pour MySQL.Les volumes suivants sont définis pour stocker les données du conteneur :
/chemin/ou/se/trouve/le/fichier/databases.sql:/docker-entrypoint-initdb.d/databases.sql : Ce volume contient un fichier SQL pour initialiser la base de données.db_data:/var/lib/mysql : Ce volume permet de faire persister les données de la base de données MySQL.Le port 3306 permet au serveur à distance de communiquer avec la base de donnée.
Le fichier databases.sql permet de créer facilement des bases de données et des utilisateurs dans le conteneur MySQL.
CREATE DATABASE IF NOT EXISTS `<database_1>`;
CREATE DATABASE IF NOT EXISTS `<database_2>`;
CREATE USER '<utilisateur_1>'@'<localhost_ou_adresse_ip_1>' IDENTIFIED BY '<mot_de_passe_utilisateur_1>';
GRANT ALL PRIVILEGES ON <database_1>.* TO '<utilisateur_1>'@'<localhost_ou_adresse_ip_1>';
FLUSH PRIVILEGES;
CREATE USER '<utilisateur_2>'@'<localhost_ou_adresse_ip_2>' IDENTIFIED BY '<mot_de_passe_utilisateur_2>';
GRANT ALL PRIVILEGES ON <database_2>.* TO '<utilisateur_2>'@'<localhost_ou_adresse_ip_2>';
FLUSH PRIVILEGES;