Dépanner l'erreur 'zsh: command not found: docker-compose' avec Docker Compose

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Docker Compose est un outil essentiel pour la gestion des applications Docker multi-conteneurs. Ce lab vous guidera à travers la résolution de l'erreur courante "zsh: command not found: docker-compose" que de nombreux utilisateurs rencontrent lorsqu'ils débutent avec Docker Compose.

En complétant ce lab, vous apprendrez comment installer correctement Docker Compose, dépanner les problèmes liés aux chemins d'accès et utiliser Docker Compose pour exécuter une simple application multi-conteneurs. Ces compétences sont fondamentales pour les développeurs travaillant avec des applications conteneurisées.

Comprendre Docker et Docker Compose

Avant de commencer le dépannage, comprenons ce qu'est Docker Compose et pourquoi il est important dans l'écosystème Docker.

Qu'est-ce que Docker ?

Docker est une plateforme qui permet aux développeurs de construire, d'empaqueter et d'exécuter des applications dans des conteneurs. Les conteneurs sont des environnements légers et isolés qui incluent tout ce qui est nécessaire pour exécuter une application - code, runtime, outils système, bibliothèques et paramètres.

Qu'est-ce que Docker Compose ?

Docker Compose est un outil pour définir et exécuter des applications Docker multi-conteneurs. Avec Docker Compose, vous utilisez un fichier YAML pour configurer les services, les réseaux et les volumes de votre application. Ensuite, avec une seule commande, vous pouvez créer et démarrer tous les services à partir de votre configuration.

Vérifions si Docker est correctement installé sur notre système :

docker --version

Vous devriez voir une sortie similaire à celle-ci :

Docker version 20.10.21, build baeda1f

Cela confirme que Docker est installé et prêt à être utilisé. Maintenant, essayons d'exécuter Docker Compose pour voir s'il est installé :

docker-compose --version

Si Docker Compose n'est pas installé, vous verrez l'erreur :

zsh: command not found: docker-compose

Ce message d'erreur est l'objectif de notre lab - nous allons dépanner et corriger ce problème dans les étapes suivantes.

Pourquoi utiliser Docker Compose ?

Docker Compose offre plusieurs avantages pour la gestion des applications multi-conteneurs :

  1. Simplifie la configuration : Définissez l'ensemble de votre pile d'applications dans un seul fichier YAML
  2. Assure la cohérence : Exécutez la même configuration d'application dans plusieurs environnements
  3. Gère les dépendances : Gère l'ordre de démarrage des services et la communication entre les conteneurs
  4. Améliore la productivité : Gagnez du temps grâce à des commandes simples pour gérer l'ensemble du cycle de vie de votre application

Dans l'étape suivante, nous allons installer Docker Compose et résoudre l'erreur "command not found".

Installation de Docker Compose

Maintenant que nous comprenons ce qu'est Docker Compose, installons-le sur notre système pour résoudre l'erreur "command not found".

Télécharger le binaire Docker Compose

La première étape consiste à télécharger le binaire Docker Compose. Le binaire officiel Docker Compose est disponible sur GitHub. Nous utiliserons la commande curl pour le télécharger :

sudo curl -L "https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Cette commande télécharge le binaire Docker Compose qui correspond à l'architecture de votre système d'exploitation et l'enregistre dans /usr/local/bin/docker-compose. La commande prendra un moment pour s'exécuter car elle télécharge le fichier.

Rendre Docker Compose exécutable

Après avoir téléchargé le binaire, nous devons le rendre exécutable :

sudo chmod +x /usr/local/bin/docker-compose

Cette commande accorde les permissions d'exécution au binaire Docker Compose.

Vérifier l'installation

Maintenant, vérifions que Docker Compose a été correctement installé :

docker-compose --version

Vous devriez voir une sortie similaire à celle-ci :

Docker Compose version v2.17.2

Si vous voyez toujours l'erreur "command not found", cela signifie que le répertoire /usr/local/bin n'est peut-être pas dans le PATH de votre système. Nous aborderons ce problème dans l'étape suivante.

Comprendre la variable PATH

La variable PATH est une variable d'environnement sous Linux qui indique au shell quels répertoires rechercher pour les fichiers exécutables lorsque vous exécutez une commande. Pour afficher votre PATH actuel, exécutez :

echo $PATH

Vous devriez voir une liste de répertoires séparés par des deux-points (:). Si /usr/local/bin ne figure pas dans cette liste, cela pourrait expliquer pourquoi le shell ne trouve pas la commande docker-compose.

Dans l'étape suivante, nous allons dépanner et résoudre tous les problèmes restants qui pourraient nous empêcher d'utiliser Docker Compose.

Dépannage de l'erreur "Command Not Found"

Si vous rencontrez toujours l'erreur "zsh: command not found: docker-compose" après l'installation, dépannons quelques causes courantes et leurs solutions.

Solution 1 : Créer un lien symbolique

Une solution courante consiste à créer un lien symbolique vers le binaire Docker Compose dans un répertoire qui se trouve certainement dans votre PATH, tel que /usr/bin :

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Cette commande crée un lien symbolique (raccourci) vers le binaire Docker Compose dans le répertoire /usr/bin, qui est généralement inclus dans le PATH du système par défaut.

Après avoir créé le lien symbolique, essayez d'exécuter Docker Compose à nouveau :

docker-compose --version

Vous devriez maintenant voir les informations de version de Docker Compose sans aucune erreur.

Solution 2 : Utiliser le plugin Docker Compose (Méthode alternative)

Dans les versions plus récentes de Docker, Compose est disponible en tant que plugin. Si vous préférez utiliser cette méthode, vous pouvez essayer :

docker compose version

Notez l'absence de trait d'union entre docker et compose. Si cette commande fonctionne, cela signifie que Docker Compose est disponible en tant que plugin, et vous pouvez l'utiliser avec cette syntaxe à la place.

Solution 3 : Ajouter Docker Compose à votre PATH

Si vous préférez conserver Docker Compose à son emplacement actuel, mais que le lien symbolique ne fonctionne pas, vous pouvez ajouter le répertoire à votre PATH manuellement :

echo 'export PATH=$PATH:/usr/local/bin' >> ~/.zshrc
source ~/.zshrc

Cela ajoute /usr/local/bin à votre PATH et applique immédiatement les modifications à votre session actuelle.

Vérification

Quelle que soit la solution que vous avez utilisée, vérifiez que Docker Compose fonctionne désormais correctement :

docker-compose --version

Vous devriez voir une sortie similaire à :

Docker Compose version v2.17.2

Maintenant que nous avons installé et configuré avec succès Docker Compose, dans l'étape suivante, nous allons créer un simple projet Docker Compose pour tester notre installation.

Création d'un projet Docker Compose simple

Maintenant que Docker Compose est correctement installé et fonctionne, créons un projet simple pour tester notre configuration. Nous allons créer une application web de base avec un serveur web et une base de données Redis.

Créer un répertoire de projet

Tout d'abord, créons un répertoire dédié à notre projet :

mkdir ~/project/docker-compose-test
cd ~/project/docker-compose-test

Créer un fichier Docker Compose

Maintenant, créons un fichier docker-compose.yml en utilisant l'éditeur de texte nano :

nano docker-compose.yml

Copiez et collez le contenu suivant dans le fichier :

version: "3"
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
  redis:
    image: redis:alpine

Ce fichier Docker Compose définit deux services :

  • web : Un serveur web Nginx qui servira le contenu d'un répertoire local
  • redis : Une base de données Redis pour la mise en cache ou le stockage des données de session

Appuyez sur Ctrl+O suivi de Entrée pour enregistrer le fichier, puis appuyez sur Ctrl+X pour quitter nano.

Créer du contenu HTML

Créons une simple page HTML que notre service web servira :

mkdir -p html
nano html/index.html

Copiez et collez le contenu suivant dans le fichier :

<!DOCTYPE html>
<html>
  <head>
    <title>Docker Compose Test</title>
  </head>
  <body>
    <h1>Hello from Docker Compose!</h1>
    <p>If you can see this, your Docker Compose setup is working correctly.</p>
  </body>
</html>

Appuyez sur Ctrl+O suivi de Entrée pour enregistrer le fichier, puis appuyez sur Ctrl+X pour quitter nano.

Exécuter le projet Docker Compose

Maintenant, lançons notre projet Docker Compose :

docker-compose up -d

L'option -d exécute les conteneurs en arrière-plan (mode détaché). Vous devriez voir une sortie similaire à :

Creating network "docker-compose-test_default" with the default driver
Pulling web (nginx:alpine)...
Pulling redis (redis:alpine)...
[...]
Creating docker-compose-test_web_1   ... done
Creating docker-compose-test_redis_1 ... done

Vérifier que les services sont en cours d'exécution

Vérifions que nos services fonctionnent correctement :

docker-compose ps

Vous devriez voir une sortie similaire à :

           Name                         Command               State          Ports
------------------------------------------------------------------------------------
docker-compose-test_redis_1   docker-entrypoint.sh redis ...   Up      6379/tcp
docker-compose-test_web_1     /docker-entrypoint.sh ngin ...   Up      0.0.0.0:8080->80/tcp

Accéder à l'application web

Vous pouvez maintenant accéder à l'application web en ouvrant un navigateur web dans l'interface LabEx et en naviguant vers http://localhost:8080. Vous devriez voir le message "Hello from Docker Compose!".

Alternativement, vous pouvez utiliser curl pour vérifier le serveur web à partir de la ligne de commande :

curl http://localhost:8080

Vous devriez voir le contenu HTML que nous avons créé précédemment.

Arrêter le projet Docker Compose

Lorsque vous avez terminé les tests, vous pouvez arrêter le projet Docker Compose :

docker-compose down

Vous devriez voir une sortie similaire à :

Stopping docker-compose-test_web_1   ... done
Stopping docker-compose-test_redis_1 ... done
Removing docker-compose-test_web_1   ... done
Removing docker-compose-test_redis_1 ... done
Removing network docker-compose-test_default

Félicitations ! Vous avez installé avec succès Docker Compose, résolu l'erreur "command not found" et testé votre configuration avec une simple application multi-conteneurs.

Résumé

Dans ce lab, vous avez appris à :

  1. Comprendre le rôle de Docker Compose dans la gestion des applications multi-conteneurs
  2. Installer Docker Compose sur votre système
  3. Dépanner et résoudre l'erreur "zsh: command not found: docker-compose"
  4. Créer et exécuter une application multi-conteneurs simple en utilisant Docker Compose

Ces compétences fournissent une base solide pour travailler avec Docker et Docker Compose. Vous pouvez désormais utiliser Docker Compose en toute confiance pour définir, déployer et gérer des applications multi-conteneurs complexes.

Pour un apprentissage plus approfondi, envisagez d'explorer des fonctionnalités Docker Compose plus avancées telles que les variables d'environnement, les réseaux, les volumes et la mise à l'échelle des services. Vous pourriez également vouloir en savoir plus sur Docker Compose dans les environnements de production et sur la manière de l'intégrer aux pipelines CI/CD.