Docker Compose
Introduction
Maintenant que vous êtes capable de construire vos propres images Docker et d’exécuter des conteneurs, vous êtes en mesure de mettre en place un système fonctionnel avec Docker. Généralement, une application moderne est composée d’éléments hétérogènes, basés sur des technologies et des services différents. Si l’on prend l’exemple d’une application web, nous aurons a minima trois services qui entreront en ligne de compte : l’application en tant que telle, une base de données et un serveur web.
Il est bien entendu possible de créer l’ensemble de ces services à l’aide de commandes du CLI, comme nous l’avons fait auparavant. Cependant, en plus de demander une grande rigueur, ce n’est pas très aisément maintenable. Bien sûr, il est toujours possible de réaliser un script dans le langage de votre choix, cependant, il existera certaines limitations dues à ce mode de fonctionnement.
Docker, qui est souvent utilisé pour répondre aux problématiques de déploiement et d’infrastructure d’un système sous forme de micro-services, propose un outil qui permet de répondre à ce problème, vous évitant ainsi de produire ces scripts.
Cet outil, vous l’aurez compris d’après...
Syntaxe du fichier Compose
Le moteur qui fait fonctionner les fichiers Docker Compose est écrit en Python. Ce langage utilise les espaces comme indentation d’instructions pour la définition des blocs. Ainsi, cette contrainte conceptuelle du langage se retrouve dans vos fichiers Compose. Il est essentiel de bien respecter l’indentation à l’aide de deux espaces pour que votre fichier soit valide et que vous ne perdiez pas de précieuses minutes à chercher pour réparer ce genre de problèmes (les erreurs n’étant pas systématiquement explicites).
Un fichier Docker Compose est un fichier texte, qui se termine par l’extension yml ou yaml. Vous pouvez l’écrire avec l’éditeur de texte de votre choix.
Pour pouvoir expérimenter par vous-même la totalité des exemples de cette section, il est nécessaire de nommer votre fichier "docker-compose.yml" ou "docker-compose.yaml".
À la suite de la rédaction du fichier, exécutez simplement la commande docker-compose up pour démarrer l’infrastructure, et [Ctrl] C pour l’arrêter. Nous verrons dans la section suivante plus en détail les commandes permettant de piloter votre infrastructure.
Il existe quelques projets communautaires pour construire des interfaces graphiques permettant d’éditer ces fichiers, cependant il est fort probable qu’avec l’habitude, vous perdrez plus de temps à utiliser ces applications qu’à rédiger votre fichier directement avec un éditeur de texte.
1. Structure d’un fichier Compose
Le fichier Docker Compose est composé d’une suite de blocs reprenant les éléments essentiels du CLI. Ainsi on retrouvera, entre autres, les blocs suivants :
-
Version : définit la version du moteur de Compose à utiliser.
-
Services : comprend les conteneurs que vous souhaitez mettre en service, avec leurs options.
-
Réseaux : comprend les réseaux à mettre en place ou à utiliser.
-
Volumes : comprend les volumes à créer ou à utiliser.
D’un seul coup d’œil, exception faite de l’entête, on retrouve les notions que l’on peut manipuler avec le CLI. L’avantage de fournir un fichier Compose...
CLI
Docker-compose est livré avec son propre CLI, différent de celui de Docker. Il permet de manipuler directement la durée de vie de l’infrastructure que vous voulez mettre en œuvre et reprend majoritairement la logique du CLI de Docker.
1. Mise en place
Les commandes du CLI considèrent qu’il existe un fichier appelé docker-compose.[yml/yaml] dans le répertoire d’exécution courant. Chacune des commandes peut être exécutée avec l’argument -f ou --file pour préciser le nom du fichier au lieu d’utiliser celui défini par convention.
Lorsque le fichier docker-compose est rédigé, il va être nécessaire de créer l’infrastructure correspondante. Il y a plusieurs façons de réaliser cela.
De prime abord, on peut s’assurer que le fichier Compose est correctement décrit (qu’il n’y a ni erreurs de syntaxe, ni problèmes d’indentation), à l’aide de la commande config :
docker-compose config [OPTIONS]
En plus de valider votre configuration, cette commande va également afficher sur la console certaines informations, comme par exemple les services ou les volumes qui sont décrits dans votre fichier. Il est possible de se passer de cet affichage grâce à l’option -q, la commande se chargeant alors de simplement valider votre fichier.
Ensuite, on peut construire les images décrites dans le fichier, à l’aide de la commande docker-compose build :
docker-compose build [OPTIONS]
Cette instruction va tenter de construire votre fichier Compose. De la même façon, l’étape de build va tout d’abord vérifier que votre fichier est syntaxiquement correct avant d’entreprendre la construction des images. Si votre fichier n’est composé que d’images externes, seule la vérification de la structure et de la syntaxe sera effectuée. Si vous avez des images à construire, ces dernières seront construites (vérification que les Dockerfiles peuvent être...