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 est l’endroit où vous allez définir les différents conteneurs de votre application. Chaque service est un conteneur individuel qui peut être construit depuis une image Docker existante (via un repository Docker Hub par exemple), ou depuis un Dockerfile personnalisé. |
Réseaux | Ils définissent comment les différents services communiquent entre eux. Il est possible de créer des réseaux personnalisés pour isoler les services, ou utiliser des réseaux par défaut. |
Volumes | Ils vous permettent de spécifier les volumes montés dans vos conteneurs. Ils sont utilisés pour stocker des données persistantes ou pour partager des fichiers entre conteneur. |
Variables d’environnement | Vous avez la possibilité de définir des variables d’environnement pour vos services. Elles peuvent être utilisées pour configurer le comportement de vos applications. Vous pouvez les définir directement dans le fichier Docker Compose, ou alors dans 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
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.
- 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é
- 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
- Nomenclature de nommage : utilisez des noms compréhensibles et significatifs pour le nommage de vos services.
- Isolez les réseaux : cela permettra de renforcer la sécurité et évitera des conflits d’ouverture de ports.
- Surveillez vos ressources attentivement (CPU, mémoire, espace disque) de vos conteneurs pour vous assurer qu’ils fonctionnent de manière optimale.
- Effectuez des sauvegardes régulières de vos volumes pour éviter toute perte de données en cas de problème
- 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.