Contenu

La base de donnée chez les docks

Contenu

Aujourd’hui, nous allons voir comment installer un conteneur de base de données, qui vous permettra d’y connecter vos différentes applications et services. Cela vous permettra de centraliser vos données et d’éviter de créer un conteneur dédié pour chaque application ou service nécessitant une base.

Il existe plusieurs systèmes de gestion de bases de données, parmi lesquels Oracle MySQL, MariaDB et PostgreSQL, pour n’en citer que quelques-uns.

Nous utiliserons ici MariaDB (un fork de MySQL), compatible avec la plupart des applications.

Nous allons créer deux fichiers :

  • .env : pour stocker les variables d’environnement (noms d’utilisateur, mots de passe, etc.) ;
  • docker-compose.yml : pour définir la configuration du conteneur.

Cette séparation permet de sécuriser les identifiants tout en gardant une configuration claire.

File: .env

MYSQL_ROOT_PASSWORD="passwordroot"
MYSQL_DATABASE="database_name"
MYSQL_USER="username"
MYSQL_PASSWORD="passworduser"

File: docker-compose.yml

services:
   mariadb:
     image:lscr.io/linuxserver/mariadb
     container_name: MariaDB
     env_file:
       - .env
     environment:
       - PUID=1002
       - PGID=1002
       - TZ=Europe/Paris
     volumes:
       - ./data:/config
     ports:
       - 3330666:3306
     restart: unless-stopped

J’ai configuré le port de sortie sur 33306 (au lieu du 3306 par défaut) pour éviter les conflits avec d’autres conteneurs Docker. Libre à vous d’adapter ce port selon vos besoins.

Après la configuration des 2 fichiers, il ne nous reste plus qu’à lancer notre conteneur docker.

docker compose up -d

Dès que les opérations sont terminées (push de l’image et démarrage du conteneur), nous pouvons vérifier que tout est correctement lancé et configuré.

Vérifions dans un premier temps les logs à l’aide de la commande suivante :

docker logs MariaDB

Vous devriez obtenir le résultat suivant en sortie :

Database Setup Completed
[custom-init] No custom files found, skipping...
230109 13:39:37 mysqld_safe Logging to '/config/databases/9488bc7ebd1e.err'.
230109 13:39:37 mysqld_safe Starting mariadbd daemon with databases from /config/databases
[ls.io-init] done.

Vérifions ensuite que les paramètres (utilisateur, mot de passe et base de données) ont bien été appliqués avec les commandes suivantes :

Accès au shell du conteneur :

docker exec -it MariaDB bash

Testons ensuite la connexion à root, à l’utilisateur et à la base de données :

mysql -uroot -p 
mysql -uuser -p

Voici le retour que vous devriez avoir si la connexion est bonne.

Welcome to the MariaDB monitor.  Commands end with ; or \\g.
Your MariaDB connection id is 7
Server version: 10.6.10-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.

Pour le test de connexion à la base de donnée :

connect $database ;
Connection id:    8
Current database: $database

MariaDB [$database]> exit
Bye

Si aucune erreur ni avertissement (warning) n’est apparu, votre configuration est opérationnelle.

Pour pouvoir utiliser la base de données avec vos services et applications, il ne restera plus qu’à renseigner login/password/database et ip:port dans les fichiers .env.