Guide Complet sur Docker Compose

L'Équipe Alphorm
L'Équipe Alphorm 12e lecture en min

Dans cet article, nous explorerons comment installer et utiliser Docker Compose pour orchestrer et gérer vos applications conteneurisées. Après avoir compris l’importance des registres Docker dans notre précédent article, nous allons maintenant voir comment Docker Compose simplifie le développement, le déploiement et la gestion des conteneurs en utilisant des fichiers de configuration.

Introduction à Docker Compose

Imaginez ceci : vous êtes sysadmin, jonglant avec une multitude de conteneurs. Chacun nécessite sa propre configuration, ses commandes individuelles, et la moindre erreur entraîne une interruption de service gênante.

Eh bien, avant Docker Compose, c’était votre réalité quotidienne. ✨

Docker Compose a résolu ces problèmes en offrant une solution simple et efficace pour orchestrer et gérer les applications conteneurisées. Il s’agit d’une extension de Docker qui utilise des fichiers de configuration YAML pour définir l’ensemble des conteneurs, des réseaux, des volumes et des autres ressources nécessaires à une application.

 

Image illustrant Docker Compose et ses fonctionnalités

Docker Compose joue un rôle crucial dans le cycle de vie des applications conteneurisées :

  • Développement: Permet de tester et de développer une application multi-conteneurs localement en utilisant un seul fichier de configuration.
  • Déploiement: Facilite le déploiement de l’application sur différents environnements (production, staging, etc.) en utilisant la même configuration.
  • Gestion: Permet de démarrer, d’arrêter, de redémarrer et de mettre à l’échelle les conteneurs de l’application de manière simple et centralisée.

En résumé, Docker Compose est un outil essentiel pour les sysadmins qui souhaitent simplifier et optimiser le déploiement et la gestion d’applications conteneurisées.

Les Avantages

L’utilisation de Docker Compose offre plusieurs avantages qui rationalisent le développement, le déploiement et la gestion des applications conteneurisées :

  • Contrôle simplifié : Il permet de définir et de gérer des applications multi-conteneurs dans un seul fichier YAML. Cela simplifie la tâche complexe d’orchestration et de coordination de divers services, facilitant ainsi la gestion et la réplication de votre environnement d’application.
  • Collaboration efficace : les fichiers de configuration  sont faciles à partager, facilitant la collaboration entre les développeurs, les équipes opérationnelles et les autres parties prenantes.
  • Développement rapide d’applications : Il met en cache la configuration utilisée pour créer un conteneur. Lorsque vous redémarrez un service qui n’a pas changé, Il réutilise les conteneurs existants. La réutilisation des conteneurs signifie que vous pouvez apporter des modifications à votre environnement très rapidement.
  • Portabilité entre environnements :Il prend en charge les variables dans le fichier Compose. Vous pouvez utiliser ces variables pour personnaliser votre composition pour différents environnements ou différents utilisateurs.

Installation et Configuration

Dans cette section, nous allons voir comment installer Docker Compose sur un système Linux. Pour des instructions spécifiques à d’autres environnements, nous vous recommandons de consulter la documentation officielle de Docker.

Référence : la documentation officielle de Docker pour l’installation du docker-compose https://docs.docker.com/compose/install/

Pour commencer, utilisez la commande suivante pour télécharger la dernière version:

				
					sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
				
			
Commande pour télécharger Docker Compose sur Linux

Cette commande télécharge la dernière version de Docker Compose (à partir du référentiel des versions de Compose) et installe le pour l’utilisateur actif

Référence : Dernière version présentement sur https://github.com/docker/compose/releases

Après avoir téléchargé Docker Compose, attribuez les permissions d’exécution au binaire :

				
					sudo chmod +x /usr/local/bin/docker-compose
				
			
Attribution des permissions d'exécution à Docker Compose

Et maintenant vérifiez que Docker Compose a été installé avec succès en exécutant la commande suivante : docker-compose --version

 

Commande pour vérifier la version installée de Docker Compose

Félicitations ! Vous avez maintenant installé Docker Compose sur votre système Linux en suivant ces instructions.

Commandes et Format de Fichier

Dans cette section, nous explorerons les commandes principales de Docker Compose ainsi que le format YAML du fichier docker-compose, essentiel pour définir et gérer des environnements conteneurisés.

Tout d’abord, on peut voir toutes les commandes  en utilisant la commande docker-compose --help.

Options disponibles pour la commande docker-compose

Donc, nous pouvons observer que Docker Compose propose un ensemble de commandes pour gérer le cycle de vie de vos applications conteneurisées, parmi lesquelles figurent :

  • docker-compose up : Cette commande permet de Démarrer tous les services définis dans votre fichier de composition.elle est particulièrement utile pour démarrer rapidement votre application en développement ou en production.
  • docker-compose build: cette commande permet de Construire les images des conteneurs définis dans votre fichier de composition.elle est utile pour créer les images nécessaires avant de déployer votre application sur un nouvel environnement.
  • docker-compose run : cette commande permet de Démarre un nouveau conteneur en utilisant une image définie dans votre fichier de composition.elle est utile pour exécuter des commandes ponctuelles dans un conteneur ou tester une nouvelle fonctionnalité de votre application.
  • docker-compose ps: cette comande permet d’Afficher la liste des conteneurs en cours d’exécution, avec des informations telles que l’ID du conteneur, l’image, l’état et les ports exposés.elle est utile pour surveiller l’état de votre application et identifier les conteneurs qui pourraient poser problème.
  • docker-compose scale: cette commande Permet de mettre à l’échelle le nombre de conteneurs en cours d’exécution pour un service donné.elle est utile pour augmenter ou diminuer la capacité de votre application en fonction de la charge.
  • docker-compose logs : cette comande permet d’Afficher les journaux des conteneurs en cours d’exécution.elle est utile pour déboguer les problèmes et identifier les erreurs dans votre application.
  • docker-compose down: Permet d’arrêter tous les services en cours d’exécution et supprime les conteneurs associés.Elle est utile pour nettoyer votre environnement de développement ou de production après avoir terminé vos tests.

🚀 Transformez votre expertise en développement avec notre formation vidéo sur les conteneurs Docker !  pour commencer et révolutionner vos compétences dès maintenant : Formation Docker !

Format et Utilisation du fichier docker-compose.yml

Comme mentionné précédemment, Docker Compose est un outil puissant pour orchestrer et gérer des applications conteneurisées. Il s’appuie sur des fichiers de configuration YAML, généralement nommés docker-compose.yml, pour définir les services, les réseaux, les volumes et d’autres ressources indispensables à une application. Un exemple de format YAML pour docker-compose

Exemple d'un fichier de configuration YAML docker-compose.yml

D’après cet exemple, nous pouvons remarquer qu’il y a plusieurs sections dans le fichier, telles que:

  • version: Indique la version du format de fichier Docker Compose utilisée.
  • services: Définit les services qui composent l’application. Chaque service est défini par un nom et une configuration.
  • networks: Définit les réseaux utilisés par les services.
  • volumes: Définit les volumes de données persistants utilisés par les services.
  • configs: Définit les configurations statiques à injecter dans les services.
  • secrets: Définit les secrets sensibles à injecter dans les services.

En comprenant le format du fichier docker compose et ses fonctionnalités, vous serez en mesure de déployer et de gérer efficacement des applications complexes. Ce que nous explorerons dans la section suivante.

Exemple de Configurations Courantes de Docker Compose

Pour bien comprendre comment Docker Compose fonctionne et comment il aide à gérer la configuration, nous allons nous appuyer sur un scénario de la documentation officielle. Ce scénario implique une simple application Web Python qui comptabilise les appels. Nous utiliserons le framework Python Flask ainsi que la base de données en mémoire Redis.

Pour commencer, nous allons créer un nouveau dossier pour le projet, puis nous nous positionnerons dans ce répertoire.

Création du fichier app.py pour l'application Python

Ensuite, nous créons un fichier nommé app.py dans le répertoire de notre projet en utilisant la commande vim :

Création d'un nouveau dossier pour le projet Docker Compose

Ensuite, nous allons ajouter le code suivant :

Code source de l'application web Python utilisant Flask

Dans cet exemple, redis est le nom d’hôte du conteneur redis sur le réseau de l’application. Nous utilisons le port par défaut pour Redis, 6379.

Ensuite, nous créons un autre fichier appelé requirements.txt avec les dépendances toujours dans notre répertoire.

Liste des dépendances Python dans le fichier requirements.txt

Le Dockerfile est utilisé pour définir l’image Docker. Il spécifie toutes les dépendances nécessaires à l’application Python, et ce que nous allons ajouter par la suite.

 

Contenu du Dockerfile pour l'image Docker de l'application

Enfin, nous allons définir nos services dans un fichier Compose. Pour ce faire, nous allons créer un fichier appelé docker-compose.yaml dans le répertoire de notre projet et y coller ce qui suit :

Contenu du fichier docker-compose.yml pour configurer les services

Ce fichier Compose définit deux services : web et redis. Le service Web utilise une image créée à partir du Dockerfile dans le répertoire actuel. Il lie ensuite le conteneur et la machine hôte au port exposé, 8000.

Cet exemple de service utilise le port par défaut du serveur Web Flask, 5000.

À partir du répertoire de votre projet, lancez votre application en exécutant la commande docker compose up.

Commande pour démarrer l'application avec Docker Compose

Compose extrait une image Redis, crée une image pour votre code et démarre les services que vous avez définis. Dans ce cas, le code est copié de manière statique dans l’image au moment de la construction.

Puis,entrez http://localhost:8000/ dans un navigateur pour voir l’application en cours d’exécution.

Interface de l'application web en cours d'exécution

Actualisez la page. Le nombre de vues devrait maintenant avoir augmenté de 1.

Affichage des vues de l'application web après actualisation

Basculez ensuite vers une autre fenêtre de terminal et tapez docker image pour répertorier les images locales. La liste des images à ce stade devrait renvoyer Redis et Web.

Liste des images Docker locales sur le système

Et enfin Arrêtez l’application, soit en exécutant docker compose down depuis le répertoire de votre projet dans le deuxième terminal, soit en appuyant sur CTRL+C dans le terminal d’origine où vous avez démarré l’application.

Commande pour arrêter l'application et supprimer les conteneurs

En résumé, Docker Compose nous a ouvert les portes d’une gestion plus fluide et efficace des applications conteneurisées. En explorant ses fondamentaux, ses avantages, et ses commandes essentielles, nous avons saisi l’importance cruciale de Docker Compose dans la simplification du cycle de vie des conteneurs.

conclusion

Maîtriser Docker Compose est essentiel pour gérer efficacement vos applications conteneurisées. Suivez ce guide pour découvrir les avantages et les meilleures pratiques d’utilisation de Docker Compose.  par la suite se plonger vers un autre volet qui parle de Docker Swarm

Partager cet article
Par L'Équipe Alphorm Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.