Docker-compose : comment faire fonctionner plusieurs containers ensemble ?

À quoi ça sert ?

On a vu précédemment, qu’on avait une erreur de connexion à la base de données Redis, on va utiliser docker-compose pour pouvoir dire à Docker de lancer plusieurs conteneurs en même temps et les agencer entre eux pour que notre application fonctionne.

Donc on comprend que ça sert à faire communiquer plusieurs conteneurs entre eux.

Comment ça fonctionne ?

On va utiliser un fichier de configuration pour configurer les services de notre application, puis avec une seule commande, on va créer et démarrer tous ces services.

On va définir les services qui composent notre application dans un fichier nommé docker-compose.yaml ou docker-compose.yml (c’est une convention, mais n’importe quel nom est acceptable). Un tel fichier est au format YAML.

Jetons un coup d’œil sur le fichier docker-compose.yaml qui se trouve ici :

version: "3"

services:
        mon_app:
                image: monimage
                depends_on:
                        - redis
                ports:
                        - "800:80"               
        redis:
                image: redis
                ports:
                        - "6379:6379"

version: "3" est la version 3 de la syntaxe du fichier docker-compose.

services: est une section décrivant les services à exécuter.

mon_app: et redis: sont les noms des services à démarrer, leur contenu décrit comment docker doit démarrer les conteneurs pour ces services.

depends_on: implique une dépendance de mon_app à redis et docker-compose commence donc par le conteneur redis puis le conteneur mon_app

ports: Docker n’autorise qu’une liaison de 1 à 1 port, ce qui empêche plusieurs conteneurs Docker d’utiliser le même port, ce qui suit la logique rappelons la syntaxe de "800:80" et "6379:6379": "port de l’extérieur:port de l'intérieur"

"port en dehors du conteneur:port dans le conteneur" j’insiste la dessus, car on a souvent des erreurs à cause de ça, juste parce qu’on expose un port, qui est déjà utilisé par une autre application (un serveur).

Une section sur les volumes et les réseaux peut également être ajoutée. L’utilisation de la section des volumes permet d’obtenir un volume déconnecté pouvant fonctionner indépendamment de la section des services de composition de docker. La section des réseaux a un résultat similaire.

Maintenant en lançant la commande :

$ docker-compose up

on obtient :

En lançant le navigateur sur localhost:800.

Maintenant la base de données est bien connectée, si tout est OK, on verra le nombre des visites s’incrémente à chaque rafraîchissement de la page.

Conclusion

Vous avez à présent toutes les bases pour être capable de maîtriser rapidement ce composant docker. Docker compose est un outil vraiment utile pour monter rapidement un projet.

1 Commentaire

  1. Ping : Docker : Comment conteneuriser votre application? – Sysblog

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.