Docker Compose : Tout ce qu’il faut savoir

Si vous lisez cet article, vous avez certainement une connaissance de cet outil de conteneurisation très populaire dans le monde DevOps : Docker. Mais qu’est alors exactement Docker Compose ? Docker Compose est utilisé pour lancer des applications qui ont besoin de plusieurs conteneurs pour fonctionner, via un fichier YAML.

Il est souvent nécessaire qu’une application ait besoin d’exécuter plusieurs conteneurs pour différentes tâches. Par conséquent, il peut s’avérer complexe de les exécuter séparément, tout en les faisant communiquer les uns aux autres. C’est là que Docker Compose intervient, et va vous faciliter grandement la tâche.

L’orchestration et les différentes actions possibles sont inscrites dans un fichier docker-compose.yml dont nous allons expliquer son fonctionnement plus en détail dans cet article. Cet unique fichier contiendra une multitude d’actions possibles, allant de la construction de vos images Docker, en passant par les connexions et les volumes.

Installation de Docker Compose

Pour commencer à utiliser Docker Compose, vous devez tout d’abord installer l’outil sur votre système. Son installation est facile et est disponible pour différentes plateformes.

1. Vérification des prérequis : avant d’installer Docker Compose, assurez-vous d’avoir Docker déjà installé sur votre système. En effet, Docker Engine est nécessaire pour le bon fonctionnement. Des privilèges administrateur ou sudo sont nécessaires pour l’installation

2. Installez Docker Compose sur votre plateforme : 

a. Sur les distributions Linux, l’installation se fait via le gestionnaire de paquets

      • Pour Ubuntu ou Debian, les commandes à exécuter sont :
$ sudo apt-get update
$ sudo apt-get install docker-compose-plugin
      • Pour les distributions basées sur RPM :
$ sudo yum update
$ sudo yum install docker-compose-plugin

b. Pour Windows et macOS, Docker Compose est généralement installé automatiquement avec Docker Desktop.

c. Enfin, une installation manuelle est possible.Il convient alors de télécharger les binaires sur le référentiel GitHub officiel.

3. Vérifiez votre installation en exécutant la commande suivante :

$ docker-compose --version

 Cette commande affichera la version de Docker Compose installée, ce qui confirmera que son installation est réussie.

Le fichier docker-compose.yml

Ce fichier contient toutes les règles et configurations nécessaires pour l’exécution de vos conteneurs. La syntaxe YAML est  conçue pour être humainement compréhensible tout en étant optimisée pour les ordinateurs. 

Sa structure est composée de différents éléments :

Version Ce paramètre est indispensable et indique à Docker Compose la version à utiliser,
conformément à la version de Docker installée sur votre système.
Services Cette section permet de définir les différents conteneurs de votre application.
Chaque service correspond à un conteneur individuel, construit depuis une image
Docker existante ou depuis un Dockerfile personnalisé.
Réseaux Ils définissent la manière dont les services communiquent entre eux. Vous pouvez
créer des réseaux personnalisés pour isoler certains services ou utiliser les
réseaux par défaut.
Volumes Ils permettent de spécifier les volumes montés dans vos conteneurs afin de stocker
des données persistantes ou de partager des fichiers entre conteneurs.
Variables d’environnement Vous pouvez définir des variables d’environnement pour configurer le comportement
de vos services, directement dans le fichier Docker Compose ou via un fichier
.env.

Voici un exemple de fichier Docker Compose :

Dans cet exemple, nous avons 2 services : web et db. Le premier, utilise l’image NGINX, expose le port 80 et monte un volume pour les fichiers HTML. Le second service, quant à lui, utilise l’image MySQL, définit un mot de passe et monte un volume pour la base de données.

En utilisant la structure du fichier Docker Compose, vous pouvez  créer des configurations plus complexes pour vos applications multi-conteneurs.

Déploiement et gestion des applications

Lorsque vous avez terminé la configuration de vos services, volumes et réseaux dans Docker Compose, vous pouvez déployer et gérer vos applications multi-conteneurs efficacement.

  • Déploiement initial

Pour déployer votre application, il suffit d’exécuter la commande suivante dans le répertoire où se trouve votre fichier Docker Compose :

$ docker-compose up

Cette commande construira les conteneurs nécessaires ainsi que tous les objets définis dans votre fichier Docker Compose (volumes, réseaux, etc), et démarrera les services.

  • Gestion des conteneurs

Voici quelques commandes utiles pour la gestion des conteneurs :

    • Pour arrêter les services et conteneurs
$ docker-compose down
    • Pour redémarrer les services
$ docker-compose restart
    • Pour afficher les informations sur les conteneurs en cours d’exécution
$ docker-compose ps
    • Vous avez la possibilité de mettre à l’échelle un service spécifique en indiquant le nombre de réplicas souhaités. La commande suivante met le service web à l’échelle avec 3 réplicas :
$ docker-compose up --scale web=3

  • Gestion des variables d’environnement

Comme nous l’avons vu précédemment, Docker Compose permet de spécifier des variables d’environnement directement dans le fichier YAML, ou dans un fichier .env. Ces variables seront utiles pour configurer le comportement de vos applications, comme des informations sensibles, de type mot de passe, clés, etc.

  • Surveillance

En cas de problème et d’anomalie, Docker Compose fournit des outils pour examiner les fichiers journaux (logs) des conteneurs. La commande suivante permet de les obtenir :

$ docker-compose logs <nom-du-service>

Quelques conseils d’utilisation à propos de Docker Compose

Il est important de suivre quelques bonnes pratiques afin de vous garantir un déploiement fluide et efficace de vos applications.

  1. Utilisez tant que possible des images fiables et de sources sûres. En effet, les images non maintenues ou obsolètes peuvent présenter des soucis de sécurité ou de compatibilité
  2. Séparez vos environnement : utilisez des fichiers Docker Compose différents en fonction de l’environnement (test, production, développement par exemple). Cela permet de bien segmenter votre travail et de garder des configurations propres et organisées
  3. Nomenclature de nommage : utilisez des noms compréhensibles et significatifs pour le nommage de vos services.
  4. Isolez les réseaux : cela permettra de renforcer la sécurité et évitera des conflits d’ouverture de ports.
  5. Surveillez vos ressources attentivement (CPU, mémoire, espace disque) de vos conteneurs pour vous assurer qu’ils fonctionnent de manière optimale.
  6. Effectuez des sauvegardes régulières de vos volumes pour éviter toute perte de données en cas de problème
  7. Mettez régulièrement vos images à jour pour garantir une meilleure stabilité et éviter d’éventuels problèmes de sécurité.

Conclusion

Nous avons vu dans cet article que Docker Compose est un outil puissant pour le déploiement et la gestion d’applications multi-conteneurs. Avec un fichier YAML configuré soigneusement, vous pouvez orchestrer efficacement vos services, volumes et réseaux.

N’oubliez pas de respecter les bonnes pratiques afin de garantir des applications stables et fonctionnelles.