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 :
| Variable | Rôle |
|---|---|
MYSQL_ROOT_PASSWORD | mot de passe du compte root |
MYSQL_DATABASE | base de données à créer automatiquement |
MYSQL_USER | utilisateur applicatif |
MYSQL_PASSWORD | mot 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ôte | Conteneur |
|---|---|
./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 :
| Situation | Résultat |
|---|---|
| reboot du serveur | conteneur redémarré |
| crash du conteneur | conteneur 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 :
-epour configurer l’application via des variables d’environnement-vpour conserver les données--networkpour communiquer avec les autres conteneurs--restart unless-stoppedpour assurer la disponibilité du serviceLa 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é. 🚀