Contrairement aux machines virtuelles, le but de Docker est d'avoir chacun de ses services dans des containers dédiés puis de les configurer pour qu'ils puissent interagir entre eux.
Sauf que l'on se retrouve très rapidement à ne plus s'y retrouver...
C'est là qu'intervient Docker Compose.
Et si vous ne savez pas encore ce qu'est Docker, notre article vous explique tout !
Qu'est-ce que Docker Compose ?
Docker Compose est un outil open-source permettant de configurer un environnement multi-container avec un simple fichier de configuration YAML.
Chaque fichier correspond à un environnement ce qui permet de les isoler entre eux et s'assurer que les projets ne se marchent pas dessus.
Dans un fichier docker-compose.yml on y défini comment créer et démarrer les services (les containers) de notre environnement et comment ils interagissent entre eux (les réseaux).
version: '3'
services:
node:
image: node:16
working_dir: /app
volumes:
- ./:/app
command: ['npm', 'start']
mysql:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database
pma:
image: phpmyadmin:latest
environment:
PMA_HOST: mysql
ports:
- "8080:80"
Avec ce fichier vous avez une base de données MySQL avec PhpMyAmin pour l'administrer et un containeur qui lance une application NodeJS depuis un volume monté.
Grâce au CLI il est très facile d'administrer son environnement :
- Démarrer l'environnement :
docker compose up - Stopper l'environnement :
docker compose stop - Supprimer l'environnement :
docker compose rm - Administrer un service :
docker compose [start|up|stop|rm] <service> - Exécuter une commande :
docker compose exec <service> <command>
Les avantages de Docker Compose
Multi-OS
Docker étant disponible sur Linux, Mac et Windows, vos développeurs ne sont pas forcés d'utiliser le même OS pour travailler avec le même environnement.
Partager et versionner
Grâce à Docker Compose vous faites de la Configuration As Code, vous avez une version sans état de votre environnement qui peut donc être partagé.
En le stockant sur Git vos développeurs peuvent travailler sur le même environnements et vous pouvez profiter pleinement du versionning pour le mettre à jour.
Un environnement centralisé
Les services étant définis au même endroit, vous pouvez démarrer et stopper complètement l'environnement comme bon vous semble.
Le CLI de Docker Compose permet de facilement de redémarrer un service en particulier ou d'exécuter une commande dans le container.
Rapidité et simplicité
Vous pouvez très facilement passer d'un projet à un autre sans avoir à se soucier de gérer les versions de PHP ou de Node et une seule commande suffit pour lancer l'entièreté d'un environnement en quelques secondes.
Docker Compose pour la production
Vous pourriez simplement cloner votre repository sur votre serveur de production et démarrer votre environnement Docker. Mais devriez vous ?
Nous répondons à cette question dans cet article.
Pour conclure
Docker Compose permet de créer des environnements Docker multi-container en Configuration As Code dans un simple fichier YML pouvant être stocké, partagé et versionné.
Il facilite le quotidien des développeurs en leur permettant de démarrer un environnement complet sans se soucier de la maintenance ni de l'OS sous-jacent.
Un projet DevOps ?
Contactez-nous !