Docker Compose a profondément changé la manière dont les développeurs abordent les applications conteneurisées, en particulier lorsqu’il s’agit de coordonner des services interdépendants. Cet outil remplace la gestion manuelle des conteneurs par un flux de travail structuré et piloté par YAML, permettant aux équipes de définir des architectures applicatives complètes dans un seul fichier de configuration.
Dans les environnements Ubuntu, cela se traduit par des déploiements reproductibles, une mise à l’échelle simplifiée et une réduction de la charge opérationnelle. Ce guide propose une nouvelle approche de l’installation et de l’utilisation de Docker Compose, avec des explications approfondies sur sa mise en œuvre pratique.
Avant de commencer ce tutoriel, assurez-vous de disposer des éléments suivants :
Déployer une instance de serveur cloud Ubuntu chez Hostman.
Disposer d’un compte utilisateur avec des privilèges sudo ou un accès root, afin d’installer des paquets et de gérer Docker.
Avoir Docker installé et en cours d’exécution sur le serveur, car Docker Compose fonctionne au-dessus de Docker Engine.
Les applications modernes sont souvent composées de plusieurs composants interconnectés, tels que des API, des bases de données et des couches de cache. Gérer ces éléments individuellement à l’aide de commandes Docker devient rapidement complexe à mesure que l’architecture s’étoffe. Docker Compose résout ce problème en permettant de déclarer tous les services, réseaux et besoins de stockage dans un fichier docker-compose.yml. Cette approche garantit la cohérence entre les environnements, que vous travailliez sur une machine Ubuntu locale ou sur un serveur cloud.
Par exemple, une application web composée d’un backend Node.js, d’une base de données PostgreSQL et d’un cache Redis. Sans Docker Compose, chaque composant nécessite une commande docker run distincte avec des paramètres réseau précis. Avec Compose, ces relations sont définies une seule fois, ce qui permet de démarrer et d’arrêter l’ensemble de l’application avec une seule commande.
Suivez les étapes ci-dessous pour installer Docker Compose sur votre système Ubuntu.
Docker Compose fonctionne comme une extension de Docker. Vérifiez donc l’état du service Docker :
sudo systemctl status docker
S’il n’est pas actif, démarrez-le avec :
sudo systemctl start docker
Actualisez la liste des paquets afin d’accéder aux versions logicielles les plus récentes :
sudo apt-get update
Pour assurer une communication sécurisée avec les dépôts Docker, les paquets suivants sont nécessaires:
sudo apt-get install ca-certificates curl
Authentifiez les paquets Docker en ajoutant leur clé cryptographique :
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
Cette étape garantit que les paquets n’ont pas été modifiés pendant le téléchargement.
Ajoutez le dépôt Docker correspondant à votre version d’Ubuntu :
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Cette commande détecte automatiquement la version du système via VERSION_CODENAME.
Mettez à jour les dépôts et installez l’extension Compose :
sudo apt update
sudo apt-get install docker-compose-plugin
Confirmez que Docker Compose est correctement installé :
docker compose version
Exemple de sortie :
Docker Compose version v2.33.0
Pour démontrer les capacités de Docker Compose, nous allons déployer un serveur web à l’aide de Nginx.
Créez un espace de travail dédié :
mkdir ~/compose-demo && cd ~/compose-demo
Créez le fichier de configuration :
nano docker-compose.yml
Ajoutez le contenu suivant :
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./app:/usr/share/nginx/html
Explication :
services : Élément racine définissant les conteneurs
web : Nom personnalisé du service
image : Image Nginx basée sur Alpine pour une empreinte réduite
ports : Redirige le port 8080 de l’hôte vers le port 80 du conteneur
volumes : Synchronise le répertoire local app avec la racine web du conteneur
Construisez la structure HTML :
mkdir app
nano app/index.html
Ajoutez le code HTML suivant :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Docker Compose Test</title>
</head>
<body>
<h1>Hello from Docker Compose!</h1>
</body>
</html>
docker compose up -d
Docker Compose téléchargera automatiquement l’image Nginx si nécessaire et configurera le réseau.
docker compose ps -a
Accédez à http://localhost:8080 en local ou à http://<SERVER_IP>:8080 sur un serveur distant. La page de test devrait s’afficher correctement.
En cas de problème, consultez les journaux du conteneur :
docker compose logs web
Arrêter temporairement les conteneurs :
docker compose stop
Supprimer toutes les ressources du projet :
docker compose down
Ces commandes permettent d’aller plus loin dans la gestion des conteneurs :
docker compose up --build – Reconstruire les images avant le démarrage
docker compose pause – Mettre les conteneurs en pause sans les arrêter
docker compose top – Afficher les processus en cours d’exécution dans les conteneurs
docker compose config – Valider et afficher la configuration finale
docker compose exec – Exécuter des commandes dans des conteneurs en cours d’exécution
(par exemple, docker compose exec web nginx -t pour tester la configuration Nginx)
Docker Compose transforme l’orchestration multi-conteneurs d’une tâche manuelle et complexe en un processus structuré, reproductible et efficace. En suivant les étapes décrites — installation de Docker Compose, définition des services en YAML et utilisation des commandes essentielles — vous pouvez gérer des applications complexes en toute confiance.