Les conteneurs sont éphémères
Le système de fichiers d'un conteneur est jetable : si on supprime le conteneur MongoDB, la base est perdue. Il faut donc stocker les données en dehors du conteneur.
docker rm : toutes les campagnes disparaissent. Les données doivent survivre au conteneur.Les volumes nommés
Un volume nommé est un espace de stockage géré par Docker, indépendant du cycle de vie du conteneur. On le monte à l'endroit où le service écrit ses données.
docker volume create fioul-data docker run -d --name fioul-mongo \ -v fioul-data:/data/db -p 27017:27017 mongo:7
Ici /data/db est le dossier où MongoDB stocke ses données ; il est désormais persisté dans le volume fioul-data.
Les bind mounts
Un bind mount monte un dossier de ta machine dans le conteneur — utile en développement (voir tout de suite un fichier modifié) ou pour injecter un jeu de données initial.
docker run -v ./init:/docker-entrypoint-initdb.d mongo:7
Persister la base du projet
On vérifie la persistance : insérer une campagne, supprimer le conteneur, le relancer sur le même volume → les données sont toujours là.
Monte fioul-data:/data/db pour la base du projet. Teste : crée une campagne, docker rm -f fioul-mongo, relance avec le même -v fioul-data:/data/db → la campagne est intacte. On réutilisera ce volume dans le docker-compose (chapitre 7).
- Le FS d'un conteneur est jetable : sans volume, les données sont perdues.
- Volume nommé (
-v nom:/chemin) pour persister les données. - Bind mount (
-v ./hôte:/conteneur) pour partager un dossier de l'hôte.