Jusqu’à présent, nous avons surtout manipulé des conteneurs simples. Mais dans la vraie vie, une application n’est presque jamais seule. Elle dépend souvent d’autres services : une base de données, un cache, un moteur de recherche, etc.
Dans cette section, nous allons construire une petite stack web classique :
- un serveur PHP/Apache pour exécuter le site
- une base de données MariaDB pour stocker les informations
Et cette fois, nous allons tout faire manuellement avec docker run.
Ce n’est pas la méthode la plus pratique… mais c’est volontaire. L’objectif est de ressentir la complexité afin de mieux comprendre pourquoi Docker Compose existe (ce sera la section suivante).
Avant de lancer quoi que ce soit, comme sur un chantier, il faut préparer le terrain.
🌐 Créer un réseau pour nos conteneurs
Par défaut, Docker place les conteneurs dans un réseau interne appelé bridge.
Cela fonctionne, mais dans un projet réel il est préférable de créer un réseau dédié pour notre application.
Pourquoi ?
Parce que ce réseau va permettre :
- aux conteneurs de communiquer entre eux
- d’isoler notre application du reste des conteneurs
- d’utiliser les noms de conteneurs comme noms DNS
Concrètement, notre serveur web pourra contacter la base de données simplement avec :
mariadb
au lieu d’une adresse IP.
Créons donc un réseau appelé monprojet-network :
docker network create monprojet-network
Docker nous renvoie normalement un identifiant de réseau.
On peut vérifier qu’il existe bien avec :
docker network ls
Vous devriez voir quelque chose comme :
NETWORK ID NAME DRIVER
xxxxxxx bridge bridge
xxxxxxx host host
xxxxxxx none null
xxxxxxx monprojet-network bridge
Notre réseau est prêt.
📁 Préparer l’arborescence du projet
Deuxième étape : préparer les dossiers du projet.
Dans Docker, un conteneur est éphémère.
Cela signifie que si on supprime le conteneur, tout ce qu’il contient disparaît.
Pour éviter cela, on va stocker certaines données sur l’hôte (votre serveur ou votre machine).
Dans notre projet, nous aurons besoin de deux choses :
- un dossier pour le site PHP
- un dossier pour les données de la base MariaDB
Créons un dossier de projet :
mkdir monprojet
cd monprojet
Puis l’arborescence suivante :
mkdir app
mkdir data
Ce qui donne :
monprojet/
│
├── app/ → contiendra notre site PHP
└── data/ → contiendra les données MariaDB
Ces dossiers seront montés dans les conteneurs au moment du lancement.
🧠 Pourquoi faire cela ?
Ces dossiers vont permettre deux choses essentielles :
Le dossier app
Il contiendra notre site PHP.
Avantage :
nous pouvons modifier les fichiers directement depuis notre machine, sans reconstruire l’image Docker.
Le dossier data
Il contiendra les fichiers de la base MariaDB.
Avantage :
si le conteneur MariaDB est supprimé ou recréé, les données restent intactes.
📌 À retenir
Avant de lancer des conteneurs pour une application, il est recommandé de préparer :
- un réseau Docker dédié pour la communication entre services
- une arborescence de projet claire
- des dossiers pour les données persistantes
Dans notre cas :
monprojet/
├── app
└── dataet le réseau :
monprojet-networkTout est maintenant prêt pour la suite du chantier.
Dans la prochaine leçon, nous allons démarrer la base de données MariaDB avec
docker run, en utilisant des variables d’environnement pour la configurer automatiquement. 🚀