Outils pour utilisateurs

Outils du site


sysadmin:docker:docker-compose

Ceci est une ancienne révision du document !


docker-compose

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

  • docker engine: le moteur docker
  • docker machine
  • docker swarm

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

  • Coordonner les conteneurs;
  • Gérer les dépendances (volumes, réseaux, partages de fichiers etc).

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

docker-compose est paramétré via un simple fichier YAML, facilement lisible et pouvant être intégré à un outil de versionning 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

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

sysadmin/docker/docker-compose.1615034676.txt.gz · Dernière modification : 2021/03/06 12:44 de 77.192.232.26