À 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.
Ping : Docker : Comment conteneuriser votre application? – Sysblog