Table des matières

, ,

docker-compose

docker-compose fait parti d'un ensemble d'outils de l'environnement Docker qui comprend:

docker-compose est un orchestrateur. Lancer un nombre important de conteneurs n'est pas forcément simple. Il faut:

docker-compose orchestre/gère des services. Un service est composé d'un ou plusieurs conteneurs.

docker-compose est paramétré via un fichier texte formaté en YAML, facilement lisible et pouvant être intégré à un outil de révision (versioning) tel que git.

Installation

apt-get install docker-compose

Commandes

Construire les images

docker-compose build

Lance l’exécution des services définis, construit les images si nécessaire

docker-compose up -d

Pour gérer les services:

#etat des services
docker-compose ps
 
# démarrage / arret / destruction d'un service
docker-compose start srv_name
docker-compose stop srv_name
docker-compose rm srv_name

Variables

Le docker-compose.yml peut comporter des variables qui seront résolues en fonction des valeurs définies dans l'environnement. Par défaut le commande docker-compose lit les valeur du fichier .env s'il existe.

.env
COMPOSE_PROJECT_NAME=test
HOSTNAME=localhost

Dans cet exemple deux variables sont définies, on récupère leur valeur au sein du fichier docker-compose.yml via la syntaxe ${MA_VARIABLE}:

${HOSTNAME}

Pour chaque service, on peut redéfinir le fichier contenant les variables d'environnement:

services:
     web:
       env_file: variables.env

Éléments de syntaxe

Le fichier docker compose est introduit par un numéro de version majeur (il est également précisé dans la documentation officielle de préciser la version mineure) les mots clés utilisés/disponibles peuvent fortement varier en fonction de la version utilisée.

Directive environnement

https://docs.docker.com/compose/compose-file/compose-file-v3/#environment

Vérifier la syntaxe

Après toute modification du fichier, la syntaxe et la complétions des variables du fichier docker-compose.yml peuvent

docker-compose config

La commande retourne sur la sortie standard les valeurs définies dans le fichier: les variables utilisés dans le fichier sont expansées.

Scaling

docker-compose permet le passage à l’échelle (scaling) via l'option scale de la commande up:

# lance 3 instances du service srv_name
docker-compose up -d --scale srv_name=3
Chaque conteneur doit avoir un nom unique. Le passage à l'échelle échouera si l'utilisateur a défini un nom de conteneur via la directive container-name. Le nom du conteneur créé lors de l'opération de mise à l'échelle est la concaténation du nom de projet, du nom de service et d'un numéro d'instance. Il est possible de redéfinir le nom de projet via la variable d'environnement COMPOSE_PROJECT_NAME. Par défaut le nom de projet correspond au nom du répertoire parent.

Références