Docker · Docker Compose

Docker Compose

Décrivez et pilotez une application multi-container avec Compose V2 et un fichier compose.yaml lisible.

Leçon disponible
20 min

Objectifs

  • Comprendre pourquoi Compose décrit plusieurs services ensemble.
  • Lire les sections services, ports, volumes, networks et environment.
  • Démarrer, observer et arrêter un projet avec docker compose.
  • Distinguer stop, down et la suppression volontaire des volumes.

Orchestrer localement avec Docker Compose

Docker Compose décrit une application multi-container dans un fichier YAML, généralement compose.yaml. Il fournit un nom de projet, crée les ressources nécessaires et applique les dépendances déclarées.

Chaque entrée de services décrit un container logique. Les noms de services deviennent aussi des noms DNS sur les réseaux Compose partagés.

Un premier fichier compose.yaml

Cet exemple déclare un service web, choisit une image et publie le port HTTP. Compose crée le container et le réseau de projet lors de up.

compose.yaml minimal
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"

Deux services, un volume et un réseau

Le service web partage app-network avec cache et publie son port. Redis conserve ses données dans le volume nommé cache-data. environment transmet ici une variable non sensible au processus.

compose.yaml avec deux services
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    environment:
      APP_ENV: development
    networks:
      - app-network

  cache:
    image: redis:7-alpine
    volumes:
      - cache-data:/data
    networks:
      - app-network

volumes:
  cache-data:

networks:
  app-network:

environment convient à une configuration non sensible. Les mots de passe et tokens doivent utiliser une solution de secrets adaptée plutôt que d’être écrits dans compose.yaml.

Piloter le projet

docker compose up crée ou met à jour les ressources et reste attaché par défaut. -d lance en arrière-plan. ps et logs servent à l’observation ; logs -f suit les nouvelles sorties.

Créer et observer le projet
docker compose up
docker compose up -d
docker compose ps
docker compose logs
docker compose logs -f
Contrôler les services existants
docker compose stop
docker compose start
docker compose restart

Utilisez la syntaxe Compose V2 docker compose. L’ancien binaire autonome docker-compose peut encore exister dans certains environnements, mais il n’est pas la référence privilégiée ici.

Différence entre stop et down

stop arrête les containers sans les supprimer : start peut les relancer. down arrête puis supprime les containers et réseaux créés par le projet, tout en conservant normalement les volumes nommés.

Retirer les containers et réseaux du projet en conservant les volumes nommés
docker compose down
Commande destructive à réserver à une suppression volontaire des données
docker compose down -v

-v supprime aussi les volumes déclarés et leurs données. Ne l’utilisez pas comme nettoyage par défaut : identifiez et sauvegardez d’abord les volumes concernés.

Bonnes pratiques

Versionnez compose.yaml, utilisez des noms de services explicites et séparez la configuration sensible. Validez les changements avant de recréer une stack contenant des données.

  • Utiliser des tags d’image explicites et maintenus.
  • Déclarer les volumes et réseaux pour rendre l’architecture lisible.
  • Consulter docker compose ps et logs après chaque déploiement local.

Mini résumé

  • compose.yaml décrit les services et leurs ressources partagées.
  • docker compose up crée ou met à jour le projet.
  • stop conserve les containers ; down les supprime avec les réseaux du projet.
  • down -v supprime aussi les volumes et doit rester volontaire.

Mini quiz

Trois questions pour vérifier les notions essentielles de la leçon.

1. Que représente une entrée sous services dans compose.yaml ?
2. Vous voulez interrompre temporairement la stack puis réutiliser les mêmes containers. Que choisir ?
3. Quel risque spécifique ajoute docker compose down -v ?