📚 Docker pour les débutants : Le Chantier Naval

4.2 : Lancer MariaDB : Utilisation des -e (variables d’environnement)

📄 Article ⏱ 5 ✅ Gratuit

Le terrain est maintenant prêt : nous avons notre réseau Docker et notre arborescence de projet.
Nous allons pouvoir lancer le premier service de notre stack : la base de données.

Dans la majorité des applications web, la base de données est le cœur du système. Le site web va s’y connecter pour lire ou enregistrer des informations.

Dans notre chantier, nous allons utiliser MariaDB, une base de données très populaire et totalement compatible avec MySQL.

📦 Les images MariaDB sont déjà prêtes

Bonne nouvelle : nous n’avons pas besoin d’installer MariaDB manuellement.
Une image officielle existe déjà sur Docker Hub.

Lors du premier lancement, Docker va automatiquement télécharger l’image si elle n’est pas présente sur votre machine.

⚙️ Configuration avec les variables d’environnement

Contrairement à une installation classique, on ne configure pas MariaDB avec un assistant ou un fichier de configuration.

La configuration se fait au moment du lancement du conteneur grâce aux variables d’environnement.

Dans Docker, on utilise l’option :

-e

Elle permet de définir une variable dans le conteneur.

Pour MariaDB, certaines variables sont reconnues automatiquement par l’image officielle :

VariableRôle
MYSQL_ROOT_PASSWORDmot de passe du compte root
MYSQL_DATABASEbase de données à créer automatiquement
MYSQL_USERutilisateur applicatif
MYSQL_PASSWORDmot de passe de cet utilisateur

Ces variables permettent d’avoir une base prête à l’emploi dès le démarrage.

🚀 Lancer le conteneur MariaDB

Nous allons maintenant démarrer notre base de données :

docker run -d \
--name mariadb \
--network monprojet-network \
-v $(pwd)/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=rootpassword \
-e MYSQL_DATABASE=monsite \
-e MYSQL_USER=monsiteuser \
-e MYSQL_PASSWORD=monsitepassword \
--restart unless-stopped \
mariadb:11

Décortiquons cette commande.

🔍 Comprendre chaque option

-d

Lance le conteneur en arrière-plan (mode détaché).

Sans cette option, le terminal resterait bloqué sur les logs.

--name mariadb

Donne un nom au conteneur.

Cela permettra aux autres conteneurs du réseau de contacter la base simplement avec :

mariadb

car Docker fournit un DNS interne automatique.

--network monprojet-network

Connecte le conteneur au réseau que nous avons créé dans la leçon précédente.

C’est ce qui permettra au futur conteneur PHP de communiquer avec la base.

-v $(pwd)/data:/var/lib/mysql

C’est le montage du dossier de données.

HôteConteneur
./data/var/lib/mysql

Dans MariaDB, le dossier /var/lib/mysql contient toutes les bases de données.

Résultat :
les données seront stockées sur votre machine, et non uniquement dans le conteneur.

-e

Ces paramètres configurent MariaDB automatiquement au premier démarrage :

-e MYSQL_ROOT_PASSWORD=rootpassword
-e MYSQL_DATABASE=monsite
-e MYSQL_USER=monsiteuser
-e MYSQL_PASSWORD=monsitepassword

MariaDB va donc :

  • créer la base monsite
  • créer l’utilisateur monsiteuser
  • lui donner accès à cette base

--restart unless-stopped

Cette option est très importante en production.

Elle indique à Docker :

Redémarre automatiquement ce conteneur s’il s’arrête.

Le comportement est le suivant :

SituationRésultat
reboot du serveurconteneur redémarré
crash du conteneurconteneur redémarré
arrêt manuel (docker stop)conteneur reste arrêté

C’est une option très utilisée pour les services critiques comme les bases de données.

🔎 Vérifier que MariaDB fonctionne

Pour vérifier que tout s’est bien lancé :

docker ps

Vous devriez voir quelque chose comme :

CONTAINER ID   NAME      IMAGE        STATUS
xxxxxxx mariadb mariadb:11 Up 10 seconds

Si vous voulez voir les logs :

docker logs mariadb

Lors du premier démarrage, MariaDB va :

  • initialiser la base
  • créer les utilisateurs
  • préparer les fichiers de données

Cela peut prendre quelques secondes.


📌 À retenir

our lancer MariaDB avec Docker nous avons utilisé plusieurs concepts importants :

  • -e pour configurer l’application via des variables d’environnement
  • -v pour conserver les données
  • --network pour communiquer avec les autres conteneurs
  • --restart unless-stopped pour assurer la disponibilité du service

La base de données est maintenant opérationnelle.

Dans la prochaine leçon, nous allons lancer le serveur Apache/PHP et le connecter à MariaDB pour afficher notre premier site web conteneurisé. 🚀