Docker Compose permet de définir et exécuter de multiples conteneurs docker, en les décrivant et les paramétrant dans un fichier texte (ou plus précisément YAML, un format particulièrement simple et lisible).
Ceci permet en premier lieu de simplifier extrêmement la ligne de commande docker, et surtout in fine de décrire des services avec leurs environnements complets et éventuellement indépendants, et de toucher à ce qu'on appelle l'infrastructure as code.
C'était auparavant une application autonome. Elle ne s'installe plus de la même façon et on n'utilise plus la commande :
docker-compose
mais
docker compose
Certaines documentations anciennes sont donc à ajuster, et tomber sur la commande docker-compose dans une documentation est un (assez mauvais) signe de son ancienneté !
De la même manière un fichier docker-compose.yml commençant par version= doit être mis à jour, car cette directive n'est plus utilisée.
Il suffit d'installer le paquet docker-compose :
sudo apt install docker-compose
Reportez-vous au chapitre Dépôt APT Docker.
Docker Compose tient dans un fichier binaire, il est donc facile de passer à la dernière version ou à une version spécifique.
Tout d'abord, si vous aviez installé une précédente version, supprimez-la, par exemple si version des dépôts officiels :
sudo apt remove docker-compose
Télécharger ensuite la version que vous souhaitez à partir de https://github.com/docker/compose/releases par exemple, pour la v5.0.1 : https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-x86_64
puis créer un répertoire :
sudo mkdir -p /usr/local/lib/docker/cli-plugins
pour y déplacer le fichier :
sudo mv docker-compose-linux-x86_64 /usr/local/lib/docker/cli-plugins/docker-compose
puis rendre celui-ci exécutable :
sudo chmod +x /usr/local/bin/docker-compose
Vérifier que docker-compose s'appelle correctement :
docker compose --version
doit retourner une ligne du type Docker Compose version v5.0.1.
2, Docker Compose est une extension (plug-in) de docker qui ajoute la sous-commande compose à la commande docker.docker compose
sans le trait d'union - entre les 2 mots.
La commande docker compose va chercher un fichier docker-compose.yml qui décrit au format YAML des services docker et leur configuration :
etc.
Pour la liste complète et la description de chaque élément, voir la documentation officielle (malheureusement non traduite). Ces éléments sont assez directement tirés des paramètres de la commande docker.
Un seul fichier docker-compose.yml permet de décrire plusieurs containers (pour un serveur LAMP par exemple Apache, PHP-FPM, MariaDB, MailHog, etc.).
Le déploiement d'un environnement complet pour une, voire plusieurs application(s) web peut alors se résumer à la récupération d'un docker-compose.yml (parfois accompagné d'autres fichiers : Dockerfile, fichiers de configuration destinés à être copiés dans le container, etc.) suivie de la commande :
docker compose up
La définition complète de l'environnement pèse ainsi seulement quelques kilo-octets, et son partage ou sa migration vers une nouvelle machine sont extrêmement rapides et faciles.
Les fichiers sont très lisibles, clairs et rapides à écrire mais c'est un détail auquel il faut faire attention.
docker-compose.yml en exemple, qu'on peut adapter rapidement, et exploiter en quelques minutes !
Pour arrêter les services, entrez la commande :
docker compose down
Pour afficher la liste des commandes disponibles :
docker compose help
Si la commande docker compose retourne l'erreur :
1 error occurred: * error listing credentials - err: exec: "docker-credential-secretservice": executable file not found in $PATH
dans le fichier ~/.docker/config.json, modifier le mot-clé credsStore pour credStore.1)
docker-compose.yml.Contributeurs : bcag2, krodelabestiole.