Docker/Docker-compose

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche


La commande docker-compose est un utilitaire généralement fourni avec Docker, permettant d'orchestrer plusieurs images et conteneurs avec la même commande[1]. Pour ce faire, les paramétrages de l’ensemble des conteneurs doit être définit dans le fichier docker-compose.yml à la racine du projet.

Installation[modifier | modifier le wikicode]

Linux[modifier | modifier le wikicode]

Lancer[2] :

curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Commandes[modifier | modifier le wikicode]

version[modifier | modifier le wikicode]

Version de docker-compose[3]. Exemple en 2019 :

version: '3.7'

networks[modifier | modifier le wikicode]

Définition du réseau des VM Docker.

services[modifier | modifier le wikicode]

Liste des conteneurs à construire.

environment[modifier | modifier le wikicode]

Injecte des variables d'environnement dans le conteneur.

env_file[modifier | modifier le wikicode]

Définit le nom d'un fichier contenant des variables d'environnement récupérables dans docker-compose.yml, avec la syntaxe "${ma_variable}". Exemple :

    env_file: .env
    environment:
        HOST_UID: "${UID}"
Attention !

Logo Sur Windows le changement de l'UID entraine une modification des droits de tous les fichiers.


depends_on[modifier | modifier le wikicode]

Permet de spécifier qu'un conteneur doit en attendre un autre pour être lancé.

Exemple[modifier | modifier le wikicode]

Exemple de docker-compose.yml contenant un seul conteneur CentOS, qui a le droit d'accéder au dossier ~/www :

version: '3.2'
services:
  centos:
    hostname: centos
    container_name: centos
    image: 'centos/systemd'
    volumes:
        - '$HOME/www:/var/www'

Gestion[modifier | modifier le wikicode]

Pour relancer le conteneur sur Linux :

sudo docker-compose stop; sudo docker-compose build; sudo docker-compose up -d

Pour relancer le conteneur sur Windows :

docker-compose stop; docker-compose build; docker-compose up -d

Ou le lancer et rentrer dedans en même temps :

sudo docker-compose run centos bash

Ou exécuter une seule commande shell dedans avant de revenir à la machine hôte :

sudo docker exec centos sh -c 'ls -alh'

Logs[modifier | modifier le wikicode]

Pour voir les logs de tous les conteneurs en live :

 docker-compose logs -f

Pour supprimer ces logs :

 find /var/lib/docker/containers/ -type f -name "*.log" -delete

Puis redémarrer les conteneurs pour qu'ils recréent des logs.

Attention !

Logo Dans docker-compose.yml, il faut toujours remplir le paramètre "default" de "networks" pour ne pas qu’il prenne une plage utilisée.


Références[modifier | modifier le wikicode]