{{tag> Xenial Focal virtualisation VETUSTE}}
----
====== Docker-Compose ======
[[wpfr>Docker_(logiciel)#Outils_associés|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 :
* nom d'une ou plusieurs images docker (éventuellement à construire et) à lancer
* variables d'environnement
* utilisateurs
* volumes (espaces de stockages persistés et points de montage)
* réseaux docker
etc.
Cela permet de décrire un environnement, et de toucher à ce qu'on appelle l'//[[wpfr>infrastructure as code]]//.
Pour plus d'information, consulter [[https://docs.docker.com/compose/|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 à [[:docker#methode_conseilleeinstallation_depuis_les_depots_officiels|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 ((ne le faites sur un serveur en //production// que si vous êtes sûr de ce que vous faites)) :
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 **credStore**((source (en) : https://forums.docker.com/t/docker-credential-desktop-exe-executable-file-not-found-in-path-using-wsl2/100225/5))
===== Voir aussi =====
- https://docs.docker.com/compose/install/#install-compose-on-linux-systems
- https://github.com/docker/compose#linux
----
//Contributeurs : //
* //[[:utilisateurs:bcag2|bcag2]]//