Aller au contenu

Compose

Introduction à Docker Compose

Docker Compose est un outil qui simplifie la gestion des applications multi-conteneurs. Il vous permet de définir l'architecture de votre application (services, réseaux, volumes) dans un seul fichier YAML. Au lieu de lancer chaque conteneur individuellement avec des commandes docker run, vous pouvez démarrer l'ensemble de votre application avec une seule commande :

docker compose up

Cet outil est essentiel pour les environnements de développement et de test, car il garantit que tous les services d'une application (comme un serveur web, une base de données et un cache) démarrent ensemble et sont correctement interconnectés.


La commande docker compose est maintenant intégrée

Auparavant, docker-compose était un programme séparé qu'il fallait installer en plus du moteur Docker. Il s'exécutait en tant que docker-compose.

Aujourd'hui, la commande docker compose est intégrée nativement à Docker Desktop et aux versions récentes du moteur Docker (à partir de la version 20.10). Vous n'avez plus besoin de l'installer séparément. Elle s'utilise directement via le sous-commande docker compose.

Ancienne commande :

docker-compose up

Nouvelle commande (intégrée) :

docker compose up

Fichier docker-compose.yml

Le cœur de Docker Compose est son fichier de configuration, généralement nommé docker-compose.yml. Ce fichier définit les services, les réseaux et les volumes de votre application.

Voici un exemple simple d'un fichier docker-compose.yml pour une application web avec un serveur Nginx et une base de données PostgreSQL :

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html

  database:
    image: postgres:14
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

Dans cet exemple :

  • services: : C'est ici que vous définissez chaque conteneur (ou service) de votre application.
    • web : Représente le conteneur du serveur web Nginx.
    • database : Représente le conteneur de la base de données PostgreSQL.
  • volumes: : Permet de définir les volumes persistants pour vos données. Ici, db_data est utilisé pour stocker les données de la base de données, assurant qu'elles ne sont pas perdues lorsque le conteneur est arrêté ou supprimé.

Commandes Docker Compose essentielles

Une fois votre fichier docker-compose.yml prêt, vous pouvez utiliser ces commandes pour gérer votre application :

  • docker compose up : Démarre tous les services définis dans votre fichier docker-compose.yml. Si les images n'existent pas, Docker les télécharge.
  • docker compose up -d : Démarre les services en arrière-plan (mode "détaché").
  • docker compose down : Arrête et supprime les conteneurs, les réseaux et les volumes créés par docker compose up.
  • docker compose ps : Affiche l'état de tous les services.
  • docker compose logs : Affiche les logs de tous les services. Vous pouvez spécifier un service pour voir ses logs uniquement (ex: docker compose logs web).