Table des matières

, , ,

Docker-Compose

Docker compose permet de définir et exécuter de multiple conteneurs docker.

La commande docker compose va chercher un fichier docker-compose.yml qui décrit des objets docker (principalement des containers) et leur configuration :

etc.

Cela permet de décrire un environnement, et de toucher à ce qu'on appelle l'infrastructure as code.

Pour plus d'information, consulter la documentation officielle (en)

Docker compose est une extension de docker.

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.

FIXME C'est aussi le cas de cette page qui est aujourd'hui en grande partie obsolète.

Installation

Depuis les dépôts officiels d'Ubuntu (conseillé)

apt install docker-compose

Depuis le dépôt docker (conseillé pour avoir une version plus récente)

Reportez-vous à l'installation sur la page docker
Cette solution installe le plug-in docker-compose-plugin à docker qui ajoute la sous-commande compose à la commande docker, aussi les appels se font par

docker compose

sans le tiret entre les 2 mots.

Avec le binaire (préférer la solution précédente)

Comme la plupart des logiciels, la version obtenue par les dépôts officielles peut-être un peu ancienne

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

Puis télécharger la version que vous souhaitez à partir de https://github.com/docker/compose/releases par exemple, pour la v2.2.3 : https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64
puis déplacer le fichier dans :

sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

puis le rendre exécutable :

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

Vérifier que docker-compose s'appelle correctement :

docker-compose --version
# qui doit retourné une ligne du type :
Docker Compose version v2.2.3

Ces commandes toutes en un pour la mise à jour sur un serveur donne 1) :

wget https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 && sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose && docker-compose --version
La mise à jour peut-être faite alors que des containers tournent.
Sous bionic, la version de docker depuis les dépôt officiels est, en mars 2022, la v19.03.13 qui est compatible avec docker-compose v2

Problèmes

Si un 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 par credStore2)

Voir aussi


Contributeurs :

1)
ne le faites sur un serveur en production que si vous êtes sûr de ce que vous faites