Leçon 10m
4.2 L'anatomie d'un Docker Compose
Découverte de la structure et des directives d'un fichier Docker Compose
L'anatomie d'un fichier Docker Compose
Docker Compose met à notre disposition un ensemble d'outils extrêmement puissants pour répondre à nos besoins d'orchestration locale. Il nous permet de franchir un cap décisif : passer d'un simple conteneur isolé à une véritable application complète en développement, où chaque brique communique de manière cohérente.
Un fichier compose.yaml (ou compose.yml) est organisé de manière très stricte et se décompose en trois blocs majeurs :
services(Obligatoire) : Définit les différents conteneurs à lancer (l'API, la base de données, le cache Redis, etc.). C'est le cœur de votre application.volumes: Déclare les volumes nommés pour garantir la persistance des données et leur partage, même après le redémarrage d'un conteneur.networks: Crée et configure des réseaux virtuels personnalisés pour isoler et faire communiquer vos conteneurs entre eux en toute sécurité.
Le cœur du réacteur : Configurer un Service
Dans le bloc services, chaque conteneur est défini par un ensemble d'instructions. Voici les directives les plus fondamentales à connaître :
1. Origine du conteneur
image: Spécifie une image Docker préexistante à récupérer (depuis votre machine locale ou un registre distant comme Docker Hub).build: Permet de construire l'image à la volée à partir d'unDockerfileprésent dans votre projet. Idéal pour packager votre propre code source.
2. Réseau et Communication
ports: Mappe un port de votre machine hôte vers un port du conteneur (ex:8080:80). Cela rend le service accessible depuis votre navigateur web ou vos outils locaux.expose: Ouvre un port uniquement pour les autres conteneurs du même réseau interne Docker. Rien n'est exposé sur votre machine hôte (idéal pour sécuriser une base de données de l'extérieur).
3. Gestion des données (volumes)
- Bind Mount : Relie un dossier de votre machine locale directement dans le conteneur. C'est l'outil indispensable en développement pour injecter votre code et voir vos modifications en temps réel (hot-reload).
- Volume nommé : Un espace de stockage géré nativement par Docker. Idéal pour conserver les données complexes et persistantes (comme les données d'une base MySQL ou PostgreSQL).
4. Cycle de vie et Fiabilité
depends_on: Gère l'ordre de démarrage des services. Assure par exemple que le backend ne démarre qu'une fois le conteneur de la base de données lancé.healthcheck: Va bien plus loin que le simple état "démarré". Il exécute une commande périodiquement pour vérifier si l'application interne fonctionne réellement (et pas seulement un conteneur qui tourne à vide).restart: Définit la politique de redémarrage automatique en cas de crash (ex:always,unless-stopped).
Tous ces mécanismes proposés par Compose sont en fait des versions simplifiées et encapsulées de concepts techniques avancés (réseaux, volumes, gestion de processus) qui existent sur Linux de manière bien plus complexe.Au fil des prochaines leçons, nous allons explorer toutes ces possibilités à travers des exemples et des ateliers pratiques !