Le réseau que Compose a créé sans le demander

Au guide précédent, Mini-Carnet a contacté Redis par son nom sans qu'aucun docker network create n'ait été tapé. Ce n'est pas un hasard : Compose crée automatiquement un réseau personnalisé pour chaque projet, et y place tous ses services. Vérifiez-le vous-même :

mini-carnet_default : Compose a nommé ce réseau à partir du dossier du projet, et y a placé mini-carnet comme redis automatiquement. C'est exactement le mécanisme manuel du guide 20, mais entièrement pris en charge pour vous, sans une seule ligne à écrire dans compose.yaml.

À retenir

Vous n'avez besoin de déclarer un réseau vous-même dans un fichier Compose que dans des cas avancés, par exemple pour isoler certains services d'autres. Pour la grande majorité des projets, y compris celui de ce parcours, le réseau par défaut créé automatiquement par Compose suffit amplement.

Un problème encore non résolu : les données de Redis

Le compteur de visites vit maintenant dans Redis, pas dans un fichier protégé par un volume. Reproduisez le test du guide 18, mais cette fois sur le service redis :

Le compteur repart de 1. Sans protection particulière, les données de Redis vivent uniquement dans la couche d'écriture de son propre conteneur, exactement le même problème que celui rencontré au guide 18 avec Mini-Carnet, mais cette fois pour un service différent.

Ajouter un volume au service Redis

La solution reprend exactement ce que vous savez déjà. L'image officielle Redis stocke ses données dans le dossier /data à l'intérieur du conteneur ; il suffit de le relier à un volume nommé :

Reconstruisez et relancez avec docker compose up -d --build, visitez la page plusieurs fois, puis répétez le test docker compose down suivi de docker compose up -d. Le compteur, cette fois, continue là où il s'était arrêté.

down -v supprime aussi les volumes

Par défaut, docker compose down conserve les volumes nommés. Mais si vous ajoutez l'option -v à cette commande (docker compose down -v), les volumes déclarés dans le fichier sont supprimés avec les conteneurs. Utile pour repartir d'un état totalement neuf, mais à utiliser sciemment : les données sont alors réellement perdues.

Vérifiez que vous avez compris

Vous ajoutez un troisième service à compose.yaml, sans lui donner d'option réseau particulière. Va-t-il pouvoir contacter mini-carnet et redis par leur nom, comme eux le font déjà entre eux ?

Oui. Compose place automatiquement tous les services d'un même fichier sur le même réseau créé pour le projet, sans configuration supplémentaire à ajouter. Ce nouveau service rejoindra mini-carnet_default comme les deux autres, et pourra les contacter par leur nom de service dès son démarrage.