Introduction
La conteneurisation a connu un essor considérable dans le secteur des technologies logicielles ces dernières années. Cela peut être attribué à Docker qui est une plateforme de conteneurs simplifiant la gestion des processus à l'intérieur des conteneurs.
Les conteneurs sont des environnements standardisés légers, virtualisés, portables et définis par logiciel qui permettent au logiciel de s'exécuter de manière isolée des autres logiciels s'exécutant sur la machine hôte physique. Cette fonctionnalité de portabilité permet aux développeurs de modulariser leurs applications en services isolés. De plus, ils peuvent être déployés indépendamment, ce qui laisse de la place pour la mise à l'échelle.
Bien que la division d'une application en plusieurs services soit une excellente chose, elle s'accompagne de la complexité liée à la gestion de plusieurs conteneurs. Vous devez vous assurer qu'ils communiquent, démarrent et s'arrêtent en même temps. Grâce à un outil appelé Docker Compose, cela devient une tâche facile. Docker Compose permet aux développeurs d'exécuter des applications Docker multi-conteneurs en utilisant des règles définies dans un YAML fichier. Le fichier YAML contient les définitions des services de l'application et la manière dont ils peuvent partager des volumes de données et des réseaux. Une fois que vous avez défini les services, vous pouvez tous les lancer avec une seule commande. Dans ce tutoriel, nous allons vous montrer comment installer, configurer et démarrer avec Docker Compose sur Ubuntu 20.04.
Prérequis
-
Comme il s'agit d'un tutoriel pratique, vous devez disposer d'une installation d'Ubuntu 20.04 comme environnement d'exploitation initial. Vous devez également disposer d'un utilisateur non-root avec des privilèges sudo. Voici un tutoriel étape par étape pour vous aider à configurer votre serveur Ubuntu. Suivez ce tutoriel pour configurer votre fichier sudoers.
-
Vous devez également installer Docker. Veuillez vous référer à ce tutoriel sur la façon d'installer et d'utiliser Docker sur Ubuntu 18.04.
Étape 1 : Installation de Docker Compose
Nous allons télécharger la dernière version stable de Docker Compose depuis son dépôt GitHub officiel. Vous pouvez trouver la dernière version sur la page des versions, au moment de la rédaction de ce tutoriel, la dernière version est 1.28.5.
Tout d'abord, connectez-vous à votre serveur Ubuntu avec l'utilisateur sudo non-root et entrez la commande suivante. Elle télécharge la dernière version (1.28.5) et enregistre l'exécutable dans le répertoire /usr/local/bin/docker-compose . Cela le rend accessible globalement sous le nom de docker-compose :
|
1 |
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
Une fois le téléchargement terminé, entrez la commande suivante pour définir les autorisations appropriées afin de rendre la commande docker-compose exécutable :
|
1 |
sudo chmod +x /usr/local/bin/docker-compose |
Maintenant, vérifiez que l'installation est réussie et que la commande peut être appelée en exécutant la commande suivante :
|
1 |
docker-compose –version |
Vous devriez obtenir une sortie comme celle-ci :

Cela confirme que Docker Compose a été installé avec succès sur votre système.
Étape 2 : Création du fichier docker-compose.yml
Pour vous aider à comprendre comment travailler avec docker-compose.yml, nous allons configurer un environnement de serveur web en utilisant l'image officielle Nginx depuis Docker Hub. Une fois déployé, nous devrions être en mesure de servir une page HTML de base à partir du conteneur.
Nous allons créer notre répertoire de travail dans le dossier personnel à partir duquel nous travaillerons. Entrez la commande suivante pour créer le répertoire :
|
1 |
mkdir ~/compose-example |
Ensuite, déplacez-vous dans le répertoire :
|
1 |
cd ~/compose-example |
Une fois dans le répertoire, créez un dossier d'application qui sera la racine du document pour l'environnement Nginx. Nous pouvons appeler ce dossier app:
|
1 |
mkdir app |
- Création d'une page HTML
Utilisons l'éditeur de texte nano pour créer le fichier index.html dans le dossier app :
|
1 |
nano app/index.html |
Ensuite, ajoutez le code HTML suivant au fichier :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="generator" content="Hugo 0.80.0"> <title>Exemple Docker Compose</title> <!-- CSS de base Bootstrap --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous"> </head> <body> <main> <section class="py-5 text-center container"> <div class="row py-lg-5"> <div class="col-lg-6 col-md-8 mx-auto"> <h1 class="fw-light">Superbe exemple Docker Compose avec CloudSigma</h1> <p class="h4"> Il s'agit d'une page HTML statique de base. </p> <p class="lead text-muted"> Cette page est servie depuis un conteneur Docker Nginx construit à l'aide de <b>docker-compose </b> </p> </div> </div> </section> </main> </body> </html> |
Pour enregistrer le fichier, appuyez sur CTRL + O, ENTRÉE. Ensuite, fermez avec CTRL + X. Ensuite, nous allons créer le docker-compose.yml à la racine de notre projet.
- Hébergement de la page HTML à l'aide de docker-compose
Ensuite, entrez la commande suivante pour ouvrir le fichier avec l'éditeur nano :
|
1 |
nano docker-compose.yml |
Après cela, ajoutez le fragment de code suivant à l'intérieur du fichier :
|
1 2 3 4 5 6 7 8 |
version: '3.7' services: webserver: image: nginx:alpine ports: - "8000:80" volumes: - ./app:/usr/share/nginx/html |
Le docker-compose.yml le fichier commence par le numéro de version qui indique à Docker Compose quelle version de configuration nous utilisons. Veuillez suivre ce lien pour en savoir plus sur la gestion des versions de Docker Compose.
Après le numéro de version, nous avons le bloc services qui contient les services qui composent l'environnement. Dans ce tutoriel, nous n'avons spécifié qu'un seul service appelé webserver. Le webserver utilisera l'image nginx:alpine. Nous avons également défini la redirection de port 8000:80. Cela signifie que toutes les requêtes provenant du port 8000 de la machine hôte seront redirigées vers le conteneur webserver sur le port 80, où Nginx est en cours d'exécution.
La directive volumes vous permet de créer un volume partagé entre la machine hôte et le conteneur que nous pouvons utiliser pour persister les données. Dans notre yml extrait de code, nous partageons le dossier local app avec le conteneur. À l'intérieur du conteneur, il sera placé à l'emplacement /usr/share/nginx/html. Par conséquent, il écrase la racine du document par défaut pour Nginx. Vous pouvez maintenant enregistrer et fermer le fichier.
Jusqu'à présent, vous avez créé votre exemple de page web HTML et le fichier docker-compose.yml avec les instructions pour construire un environnement de serveur web conteneurisé. Voyons comment nous pouvons lancer cette configuration à l'étape suivante.
Étape 3 : Exécution de la commande Docker Compose
Dans cette étape, nous allons exécuter la commande pour lancer notre environnement conteneurisé. Ci-dessous se trouve la commande unique qui initialisera le processus de téléchargement des images Docker, créera un conteneur pour le service webserver et lancera l'environnement conteneurisé en arrière-plan :
|
1 |
docker-compose up -d |
Docker est conçu pour être rapide et efficace, donc, lorsque vous exécutez la commande ci-dessus, il vérifie d'abord votre système local pour l'image définie. Si elle est manquante, il la récupérera ensuite depuis le dépôt Docker Hub. Il devrait afficher une sortie similaire à ceci :

Lorsque l'exécution de la commande est terminée, elle démarrera l'environnement de conteneurs en arrière-plan. Vous pouvez vérifier qu'il fonctionne à l'aide de la commande :
|
1 |
docker-compose ps |
Vous devriez obtenir une sortie similaire :

Si vous naviguez vers l'adresse IP ou le nom de domaine de votre serveur et ajoutez le port 8000, c'est-à-dire server_domain_or_IP:8000 vous devriez pouvoir voir l'exemple de page HTML que nous avons créé :

Si vous vous souvenez, nous avons configuré un volume partagé entre le conteneur et le système hôte. Cela maintient les fichiers du conteneur synchronisés avec les fichiers du système hôte. Par conséquent, si vous apportez une modification au fichier index.html, il se synchronise automatiquement avec le conteneur et cela se reflète lorsque vous rechargez la page dans le navigateur. Vous pouvez essayer avec l'éditeur nano. Apprenons d'autres commandes à l'étape suivante.
Étape 4 : Commandes Docker Compose supplémentaires pour la gestion des environnements de conteneurs
Maintenant que vous avez déployé avec succès une page web à l'aide de la seule commande docker-compose-up, voyons quelques commandes supplémentaires qui peuvent être utiles pour gérer les environnements conteneurisés.
Nous allons commencer par la commande logs. Les journaux (logs) peuvent être cruciaux lorsque vous dépannez les pannes de votre application. Tout d'abord, exécutez la commande suivante pour afficher les journaux générés par le conteneur Nginx :
|
1 |
docker-compose logs |
Voici un exemple de sortie des journaux :

Vous pouvez suspendre l'exécution de l'environnement sans modifier l'état des conteneurs à l'aide de la commande :
|
1 |
docker-compose pause |
![]()
Ensuite, pour réactiver ou reprendre les exécutions, utilisez la commande :
|
1 |
docker-compose unpause |
![]()
Vous pouvez souhaiter arrêter les conteneurs sans détruire leurs données. Pour ce faire, utilisez la commande suivante :
|
1 |
docker-compose stop |
![]()
Pour détruire les conteneurs, les réseaux et les volumes associés à l'environnement conteneurisé, utilisez la commande :
|
1 |
docker-compose down |
![]()
Gardez à l'esprit que la commande ci-dessus ne supprime pas les images de base utilisées par Docker Compose pour lancer l'environnement. Cela garantit des constructions plus rapides lorsque vous démarrez votre environnement, car il vérifie la machine locale pour trouver des images correspondantes. Si vous souhaitez supprimer complètement l'image de base, vous devez le spécifier dans la commande. Pour notre exemple, nous pouvons supprimer l'image nginx:alpine avec la commande :
|
1 |
docker image rm nginx:alpine |

Enfin, vous pouvez trouver plus de commandes dans la référence de la ligne de commande Docker Compose officielle.
Conclusion
Dans ce tutoriel, vous avez installé Docker Compose sur Ubuntu 20.04, créé un environnement conteneurisé basé sur une image de serveur web Nginx, et appris à gérer les différents services à l'aide des commandes Docker Compose.
Si vous souhaitez apprendre à déployer une application dynamique réelle qui dépend de plusieurs conteneurs, veuillez lire notre tutoriel sur le déploiement de Laravel, Nginx et MySQL avec Docker Compose. Vous pouvez également trouver une liste complète des commandes docker-compose dans la documentation officielle de Docker Compose.
Bon développement !
Commentaires
Aucun commentaire pour l'instant. Soyez le premier.