Partie 6 · Compose
Docker Compose
Une application est faite de plusieurs services (application, base de données, cache distribué). Les lancer à la main devient laborieux, et empiler des scripts shell ne fait que déplacer le problème. Docker Compose permet de manipuler plusieurs conteneurs d'un coup, à partir d'un fichier de configuration qui décrit la topologie du service.
Démarche : (1) définir les images (officielles ou construites avec un Dockerfile) ; (2) décrire les conteneurs dans docker-compose.yml ; (3) tout manipuler avec la commande docker-compose.
Notion de service : un ou plusieurs conteneurs basés sur la même image. Exemple WordPress du cours : service db = 1 conteneur ; service wordpress = 2 conteneurs (service passé à l'échelle).
Vérifie que tu as compris
Exemple de fichier (exemple ajouté, inspiré de l'exemple WordPress du cours dont le contenu n'est pas dans l'extraction) :
services:
db:
image: mysql
volumes:
- dbdata:/var/lib/mysql
wordpress:
image: wordpress
ports:
- "8080:80"
depends_on:
- db
volumes:
dbdata:
Lecture : deux services. db utilise l'image mysql et un volume nommé pour ses données. wordpress utilise l'image wordpress, publie son port 80 sur le 8080 de l'hôte ("8080:80" = hôte:conteneur) et démarre après db.
docker-compose up -d docker-compose ps docker-compose logs docker-compose down
(Exemple ajouté.) Les sous-commandes pilotent toute l'application : démarrer, lister, voir les logs, tout arrêter. Le cours montre aussi qu'on passe à l'échelle simplement (plusieurs conteneurs pour un service).
Vérifie que tu as compris
ports: - "8080:80", quel numéro est le port de l'hôte ?