Dans ce tutoriel, je vais vous expliquer comment créer un conteneur MariaDB ou MySQL avec Docker.
Aujourd’hui de plus en plus d’application sont présentes en entreprise et nécessite sous une base de données.
Auparavant, on avait souvent un serveur dédié au base de données MySQL ou MariaDB ou toutes les bases de données cohabités sur le même serveur et avec le même service. Pour « isoler », on devait créer des utilisateurs dédiés à chaque base de données.
La problématique avec cette solution, c’est le partage du même service, si une application par le biais d’une requête faisait planter le serveur de base de données, c’est toute les applications qui étaient impactées.
Avec Docker, on va pouvoir sur un même serveur, faire fonctionner plusieurs instances différentes et isoler de serveur MariaDB et/ MySQL.
Cette solution, nous apporte aussi de la flexibilité sur les versions, car certain éditeur souhaite des versions particulières.
Pour commencer, vous devez avoir un serveur Linux avec Docker et docker-compose d’installé, si vous avez besoin j’ai traité ce sujet dans le tutoriel suivant : Installer Docker sur Ubuntu et Debian.
Afin de faciliter le déploiement de base de données MariaDB et/ou MySQL, j’ai créé un ensemble de fichier docker-compose.yml et .env, qui peuvent être réutilisés à cette adresse : https://git.rdr-it.com/docker/mariadb-or-mysql-container
Pour illustrer le tutoriel et l’utilisation des fichiers, on va déployer deux conteneurs de base de données, un MariaDB et un MySQL.
Avant de commencer, vous devez connaitre les versions dont vous avez besoins et récupérer les tags des versions :
- MariaDB : https://hub.docker.com/_/mariadb
- MySQL : https://hub.docker.com/_/mysql
Sur le serveur, créer un dossier qui va recevoir le conteneur :
sudo mkdir mariadb-c1
Pour ma part, j’ai l’habitude de créer à la racine un dossier containers et ensuite je crée un sous dossier par conteneur.
Placer dans le dossier que vous venez de créer et cloner le dépôt dedans :
sudo git clone https://git.rdr-it.com/docker/mariadb-or-mysql-container.git .
Une fois le dépôt cloner, on va éditer le fichier .env
qui contient tous les paramètres de personnalisation du conteneur.
sudo nano .env
Voici la liste des paramètres à éditer :
Paramètre | Valeur |
NAME_CONTAINER | Nom du conteneur |
DB_ENGINE | mariadb ou mysql |
DB_VERSION | Tag de l’image que vous, souhaitez pour le moteur de base de données |
PORT_EXPOSE | Pour depuis lequel le service MySQL ou MariaDB sera disponible |
MYSQL_DATABASE | Nom de la base de données qui sera créé |
MYSQL_ROOT_PASSWORD | Mot de passe du compte root |
MYSQL_USER | Utilisateur qui sera créé en même temps de que la base de données |
MYSQL_PASSWORD | Mot de passe de l’utilisateur MYSQL_USER |
Voici à quoi ressemble pour fichier pour avoir une conteneur MariaDB en version 10.9 avec une base de données db1, le conteneur sera exposé sur le port 40001 du serveur hôte.
Il ne reste plus qu’à démarrer le conteneur :
sudo docker-compose up -d
Si l’image n’est pas présente, il va d’abord la télécharger et ensuite démarrer le conteneur. On aurait aussi pu avant utiliser la commande
sudo docker-compose pull
pour télécharger l’image sur le serveur Docker.
La commande sudo docker ps permert de voir que notre conteneur fonctionne :
On recommence l’opération, cette fois ci pour avoir un conteneur MySQL 5.7 :
Maintenant, on peut voir que j’ai deux conteneur (serveur) MariaDB et MySQL qui fonctionne sur le même serveur :
Si vous avez besoin de restaurer une base de données dans un conteneur, voici la commande :
sudo docker exec -i <container-name> mysql --user <user> --password=<password-for-user> <database> < </home/my-user/backup-file.sql>
Vous savez maintenant comment déployer des conteneurs MariaDB et MySQL sur un même serveur.
Dans le cadre d’utilisation de conteneur, le serveur est MySQL / MariaDB est automatiquement disponible en connexion à distante (remote access).