Docker Compose : c’est quoi et comment l’utiliser ?

Docker Compose : c’est quoi et comment l’utiliser ?

Docker Compose est un outil conçu pour définir et exécuter des projets multi-conteneurs. Les développeurs l’utilisent pour simplifier la gestion des services interconnectés, tels que la combinaison d’une application frontale et d’un serveur de base de données, ce qui leur permet d’administrer facilement l’ensemble de la pile d’applications.

À l’aide d’un seul fichier YAML, Docker Compose permet aux développeurs de spécifier l’infrastructure nécessaire à la création d’une application, y compris l’image à utiliser, la configuration du réseau interne et le volume persistant à monter. Vous pouvez ensuite créer tous les conteneurs en fonction de la configuration en exécutant la commande docker compose up.

Tout au long du cycle de vie du projet, vous pouvez gérer les conteneurs à l’aide d’autres commandes Compose. Par exemple, docker compose down supprime tous les services, tandis que docker compose ps répertorie les conteneurs actuellement en cours d’exécution spécifiés dans le fichier YAML.

Pour utiliser Docker Compose, vous devez avoir installé Docker Engine et Docker CLI. Ensuite, configurez-le en téléchargeant l’extension à l’aide du gestionnaire de paquets de votre système ou de Homebrew. Si vous utilisez Docker Desktop, cet outil d’orchestration est préinstallé.

Approfondissez vos connaissances pour en savoir plus sur Docker Compose et sur la manière de l’utiliser pour gérer des applications multi-conteneurs.

Qu’est-ce que Docker Compose ?

Docker Compose est un outil qui permet aux développeurs de définir et d’exécuter facilement des applications Docker multi-conteneurs. Son objectif principal est de simplifier, centraliser et unifier la gestion de plusieurs services.

Docker Compose s’appuie sur un seul fichier YAML dans lequel vous définissez tout ce qui concerne les conteneurs de votre application : quelle image chaque service doit utiliser, comment ils communiquent et où ils stockent les données persistantes. Cette configuration vous permet de créer et de gérer ces conteneurs.

Comment fonctionne Docker Compose ?

Docker Compose fonctionne en définissant trois composants essentiels des applications multi-conteneurs dans le fichier YAML : les services, les réseaux et les volumes.

Lorsque vous déployez une application à partir du fichier YAML, Docker Compose extrait ou construit l’image pour créer ce service, également appelé conteneur.

Docker Compose crée ensuite un réseau interne pour permettre aux services de communiquer entre eux et initialise des volumes pour stocker les données persistantes que les conteneurs peuvent partager. Il configure également les variables d’environnement pour chaque service afin de transmettre les données sans les coder en dur dans son image.

Toutes les configurations, y compris l’image à utiliser, la configuration du réseau, l’emplacement de montage des volumes persistants et les variables d’environnement à inclure, sont définies dans le fichier YAML. Cela signifie que vous pouvez créer et gérer tous les conteneurs de votre application à partir de ce fichier.

Exemple de fichier YAML Docker Compose

Voici un exemple de fichier YAML Docker Compose réel définissant un projet comprenant deux services interconnectés : une application web simple et une instance de cache Redis.

Pour vous aider à comprendre la configuration, consultez les commentaires pour voir ce que fait chaque ligne.

services:

  web: # Service pour l'application web

    build: . # Crée l'image à partir du fichier Dockerfile dans le répertoire actuel

    ports:

      - "8000:5000" # Mappe le port hôte 8000 au port conteneur 5000

    depends_on:

      - redis # S'assure que 'redis' démarre avant 'web' 

    volumes:

      - ./:/app # Monte le répertoire actuel dans le conteneur à /app (montage lié)

    environment:

      REDIS_HOST: ${REDIS_HOST:-redis} # Définit REDIS_HOST à partir de l'environnement ou par défaut à 'redis'

  redis: # Service pour le cache Redis

    image: redis:6 # Utilise l'image Redis officielle (version 6)

    expose:

      - "6379" # Expose le port 6379 aux autres services au sein du réseau Docker

    volumes:

      - redis_data:/data # Conserve les données Redis dans un volume nommé 

volumes:

  redis_data: {} # Déclare le volume nommé pour la persistance des données Redis

Notez que le contenu exact du fichier YAML varie en fonction de votre application, de vos services et de votre configuration.

Comment installer Docker Compose

Les étapes d’installation de Docker Compose varient en fonction du type d’application Docker et de votre système d’exploitation.

Si vous utilisez Docker Desktop, Compose est déjà préconfiguré. Pour Docker CLI, vous pouvez configurer l’extension Compose à partir du référentiel officiel ou en le téléchargeant manuellement. Nous vous expliquons comment procéder à partir du référentiel officiel, car cela simplifiera les mises à jour futures.

Avant de continuer, assurez-vous d’avoir configuré Docker Engine et Docker CLI. Si ce n’est pas le cas, consultez notre guide d’installation de Docker sur Ubuntu pour en savoir plus sur les étapes à suivre.

Une fois Engine et CLI configurés, installez Compose en fonction de votre système d’exploitation. Sous Linux, vous pouvez le faire à l’aide du gestionnaire de paquets de votre système. Voici, par exemple, les commandes à utiliser pour les distributions basées sur Debian :

sudo apt update
sudo apt install docker-compose-plugin

Si vous utilisez des systèmes d’exploitation non Debian, remplacez simplement apt par le gestionnaire de paquets correspondant. Par exemple, utilisez dnf si vous utilisez des distributions basées sur RHEL.

Pour les utilisateurs de macOS, installez Docker Compose via Homebrew à l’aide de cette commande :

brew install docker-compose

Sous Linux et macOS, vous pouvez vérifier si Docker Compose est correctement installé en exécutant la commande suivante :

docker compose version

Si Docker Compose est correctement configuré, vous verrez son numéro de version s’afficher sur votre terminal.

Numéro de version de Docker Compose sur le terminal.

Comment utiliser Docker Compose

Docker Compose vous permet de définir la configuration de votre application, d’exécuter la pile et de gérer son cycle de vie à l’aide d’un seul outil.

Pour mieux illustrer l’utilisation de Docker Compose dans des scénarios réels, supposons que nous voulons exécuter WordPress sur Ubuntu à l’aide de Docker. Voici à quoi ressemble le flux de travail.

  1. Utilisez un éditeur de texte tel que nano pour créer un fichier de configuration YAML ou YML. Vous pouvez utiliser n’importe quel nom, mais il est conseillé d’utiliser le nom par défaut docker-compose.yml ou compose.yaml pour faciliter la gestion.
  2. Dans le fichier YAML, spécifiez les images WordPress et MySQL, ainsi que leurs paramètres, tels que la configuration réseau, le volume persistant et les dépendances.
  3. Utilisez Docker Compose pour créer et exécuter tous les services WordPress et MySQL à l’aide des paramètres et des dépendances spécifiés dans le fichier YAML :
docker compose up
  1. Tout au long de votre projet, vous devrez arrêter et supprimer tous vos conteneurs pour les mises à jour ou la maintenance. Pour ce faire, exécutez la commande suivante :
docker compose down

Vous pouvez modifier le comportement de la commande docker compose à l’aide d’indicateurs. Par exemple, si vous souhaitez créer une application à partir d’une configuration qui n’utilise pas le nom par défaut, ajoutez l’indicateur -f ou –file pour spécifier le fichier que Docker Engine lira :

docker compose -f votre-fichier-compose.yaml up 

Par défaut, Docker Compose créera les conteneurs dans votre répertoire de travail actuel. Pour déployer l’application dans un autre dossier, ajoutez –project-directory et spécifiez le chemin de déploiement :

docker compose --project-directory /chemin/de/déploiement complet up

Exécution des conteneurs en arrière-plan 📦

Docker Compose exécute automatiquement l’application déployée sur votre session de terminal principale. Si vous souhaitez créer et exécuter votre projet en arrière-plan, ajoutez l’option -d ou –detach.

Vous pouvez également combiner plusieurs indicateurs en les séparant par une barre oblique inversée. Par exemple, utilisez la commande suivante si vous souhaitez déployer une application à partir d’un fichier YAML avec un nom spécifique vers un autre répertoire :

docker compose \
  -f /path/to/my-docker-compose.yaml \
  --project-directory /path/to \
  up

Lorsque vous supprimez des conteneurs, les données restent intactes car elles sont attachées à des volumes persistants. Si vous souhaitez également supprimer les volumes, utilisez l’indicateur –volumes comme suit :

docker compose down --volumes

Commandes courantes de Docker Compose

Outre up et down, il existe d’autres commandes Docker Compose utilisées pour gérer l’ensemble de la pile d’applications. Voici quelques-unes des plus utilisées :

  • docker compose ps – répertorie les conteneurs en cours d’exécution gérés par Docker Compose. La sortie comprend le nom du conteneur, l’image, la commande, le service, l’état et les ports.
  • docker compose logs – agrège et affiche les journaux de tous les services de la pile. L’ajout du drapeau -f affiche les journaux de tous les conteneurs en temps réel.
  • docker compose start – démarre les conteneurs existants qui sont à l’arrêt.
  • docker compose stop – arrête les conteneurs en cours d’exécution sans les supprimer ni les détruire.
  • docker compose restart – force un redémarrage immédiat des conteneurs.
  • docker compose build – force la reconstruction des images qui utilisent la directive build dans le fichier YAML. Vous pouvez ajouter le drapeau –no-cache pour lancer une reconstruction propre.
  • docker compose push – pousse toutes les images construites vers leurs URL de registre distant.
  • docker compose pull – récupère toutes les images nécessaires à la construction de la pile sans démarrer les conteneurs.

Quelle est la différence entre Docker et Docker Compose ?

Docker comporte divers concepts, termes et outils, chacun jouant un rôle distinct au sein de l’écosystème des conteneurs. Les comprendre vous permet d’utiliser la plateforme de manière efficace et efficiente.

Compose fait partie d’un écosystème Docker plus large et est souvent confondu avec la CLI Docker. Il s’agit dans les deux cas d’utilitaires en ligne de commande qui gèrent des entités sur Docker, mais ils diffèrent à plusieurs égards.

Voici une comparaison entre Docker Compose et Docker CLI.

AspectDocker CLIDocker Compose
Cas d’utilisationIdéal pour les configurations à conteneur uniqueConçu pour les applications multi-conteneurs
OrchestrationManuelle, ce qui signifie que vous devez exécuter chaque conteneur individuellementAutomatisée, vous permettant de gérer tous les services via un seul fichier YAML
Format de configurationSpécifié dans la commande à l’aide d’indicateursDéclarée dans le fichier YAML
Réutilisabilité et portabilitéLe partage et la reproduction de configurations complexes sont difficiles car la configuration est spécifiée dans la commandeFacilement versionnable et réutilisable, car vous pouvez créer un projet à partir d’un fichier de configuration autonome
Configuration de test et de développementfastidieuse pour les environnements de développement multiservicesIdéal pour le développement local, car tous les services sont contenus dans un seul fichier
Utilisation en productionConvient à la production de projets simples, mais pas aux applications multiservicesPeut être utilisé pour les environnements de production, mais est généralement remplacé par Docker Swarm ou Kubernetes pour les projets à plus grande échelle
Courbe d’apprentissagePlus facile pour les débutants, car il ne gère qu’une application à conteneur uniqueLégèrement plus difficile, mais plus applicable aux projets réels

Quelle est la prochaine étape après l’utilisation de Docker Compose ?

Une fois que vous avez appris à utiliser Docker Compose, vous pouvez l’utiliser pour gérer votre projet multiservices de manière transparente et efficace. Dans un scénario réel, cependant, vous devrez peut-être travailler avec des conteneurs individuels pour des tâches telles que l’ajout d’un nouveau service ou le dépannage d’une partie spécifique de votre application.

Dans cette optique, il est essentiel d’apprendre à créer un conteneur Docker afin de pouvoir travailler plus efficacement avec l’écosystème au sens large.

Notez que si Docker Compose et les conteneurs sont des concepts utiles de cette plateforme de conteneurisation, vous devrez apprendre à utiliser d’autres outils à mesure que votre projet se développe. Par exemple, passez à Kubernetes ou Docker Swarm pour gérer plusieurs conteneurs de manière plus fiable.

Si vous souhaitez déployer une application conteneurisée sur la solution d’hébergement VPS de Hostinger, vous pouvez utiliser notre fonctionnalité Gestionnaire Docker Compose. Celle-ci vous offre un tableau de bord de gestion intégré à hPanel pour rationaliser le déploiement et l’administration des applications basées sur Docker.

Author
L'auteur

Chaimaa Chakir

Chaimaa est une spécialiste du référencement et du marketing de contenu chez Hostinger. Elle est passionnée par le marketing digital et la technologie. Elle espère aider les gens à résoudre leurs problèmes et à réussir en ligne. Chaimaa est une cinéphile qui adore les chats et l'analyse des films.