Docker Compose est un outil qui permet de décrire (dans un fichier YAML) et gérer (en ligne de commande) plusieurs conteneurs comme un ensemble de services inter-connectés. Si l'on travaille sur une application Rails, nous allons par exemple décrire un ensemble composé de 3 conteneurs :
Nous pourrons alors démarrer nos ensembles de conteneurs en une seule commande “docker-compose up”.
Sans Docker Compose, nous aurions dû lancer 3 commandes “docker run” avec beaucoup d’arguments pour arriver au même résultat.
Par ailleurs, cela aurait nécessité que nous rédigions un README plutôt précis pour que les autres membres d'une équipe obtiennent le même résultat.
Avec Docker Compose, cette configuration est faite dans un fichier qui est versionné avec le reste du code de l’application.
Dans le fichier “docker-compose.yml”, chaque conteneur est décrit avec un ensemble de paramètres qui correspondent aux options disponibles lors d’un “docker run” : l’image à utiliser, les volumes à monter, les ports à ouvrir, etc. Mais on peut également y décrire des éléments supplémentaires, comme la possibilité de « construire » (docker build) une image à la volée avant d’en lancer le conteneur.
Docker Compose s'appuie sur Docker Engine pour tout travail significatif, alors assurez-vous que Docker Engine est installé localement ou à distance, selon votre configuration.
Sous Linux, vous pouvez télécharger le binaire Docker Compose à partir de la page de publication du dépôt Compose sur GitHub.
Suivez les instructions du lien, qui impliquent l'exécution de la commande curl dans votre terminal pour télécharger les binaires. Ces instructions étape par étape sont également incluses ci-dessous.
Exécutez cette commande pour télécharger la version stable actuelle de Docker Compose :
# sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Note:
Pour installer une version différente de Compose, remplacez 1.26.0 par la version de Compose que vous souhaitez utiliser.
Appliquer les permissions exécutables au binaire :
# sudo chmod +x /usr/local/bin/docker-compose
Note:
Si la commande docker-compose échoue après l'installation, vérifiez votre chemin. Vous pouvez également créer un lien symbolique vers /usr/bin ou tout autre répertoire dans votre chemin.
Par exemple :
# sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Pour valider l'installation de Docker compose, rien de plus simple. Il nous suffira de lancer la commande suivante :
# docker-compose --version
docker-compose version 1.26.0, build 1110ad01
| Commande | Description |
|---|---|
| docker-compose up | Démarre les services décrits dans docker-compose.yml et ne rend pas la main. |
| docker-compose up -d | Fait la même chose mais me rend la main une fois que les services sont démarrés. |
| docker-compose up –build | Reconstruit les services avant de les lancer. |
| docker-compose down | Stoppe les services. |
| docker-compose restart | Redémarre l’ensemble des services. |
| docker-compose restart nginx | Redémarre un des services (ici nginx). |
| docker-compose exec rails bash | Fournit une console bash au sein du conteneur rails. |
| docker-compose exec rails bin/rails db:migrate | Effectue un rails db:migrate au sein du conteneur rails. |
| docker-compose logs | Retourne l’ensemble des logs des services depuis le dernier démarrage et me rend la main. |
| docker-compose logs -f | Affiche les logs des services et continue à les « écouter » sans me rendre la main. |
| docker-compose logs -f rails | Fait la même chose pour le conteneur rails uniquement. |