Agence web » Actualités du digital » Qu’est-ce que Docker Compose et comment l’utilisez-vous? –

Qu’est-ce que Docker Compose et comment l’utilisez-vous? –

les-conteneurs-valent-ils-le-mal-de-tete-cloudsavvy-it-3358835

Docker Compose est un outil que vous pouvez utiliser pour gérer de manière centralisée les déploiements de nombreux conteneurs Docker différents. C’est un outil important pour toute application nécessitant plusieurs microservices, car il permet à chaque service de se trouver facilement dans un conteneur géré séparément.

Que fait Docker Compose?

Les conteneurs Docker sont utilisés pour exécuter des applications dans un environnement isolé. Il est assez courant de nos jours de voir les déploiements d’applications effectués dans Docker pour les nombreux avantages qu’il apporte. Cependant, ce n’est souvent pas aussi simple que d’exécuter un seul conteneur. Habituellement, plusieurs conteneurs peuvent être réunis pour agir comme un service cohérent composé de nombreuses pièces mobiles.

La gestion de tout cela au moment du déploiement est compliquée, donc pour le nettoyer, Docker fournit Docker Compose, un outil de configuration utilisé pour exécuter plusieurs conteneurs à la fois. Vous pouvez définir toute la configuration dans un fichier YAML, puis démarrer tous les conteneurs avec une seule commande.

Plutôt que d’avoir tous vos services dans un seul grand conteneur, Docker Compose vous permet de les diviser en conteneurs gérables individuellement. C’est à la fois meilleur pour la création et le déploiement, car vous pouvez tous les gérer dans des bases de code distinctes et vous n’avez pas besoin de démarrer manuellement chaque conteneur individuel.

L’utilisation de Docker Compose est un processus en trois étapes:

  • Créez les images des composants à l’aide de leurs fichiers Dockerfiles ou extrayez-les d’un registre.
  • Définissez tous les services de composants dans un docker-compose.yml fichier.
  • Exécutez-les tous ensemble en utilisant le docker-compose CLI.

Docker Compose n’est pas un autre type de Dockerfile. Vous devrez toujours créer et publier vos conteneurs Docker à l’aide d’un Dockerfile. Mais, au lieu de les exécuter directement, vous pouvez utiliser Docker Compose pour gérer la configuration d’un déploiement multi-conteneurs.

Comment utilisez-vous Docker Compose?

La configuration d’un fichier de composition de docker se fait dans docker-compose.yml. Vous n’avez pas besoin de le placer à la racine de votre projet comme un Dockerfile. En fait, il peut aller n’importe où, car il ne dépend d’aucun autre code. Cependant, si vous créez les images localement, il devra aller dans un dossier de projet avec le code en cours de construction.

Un fichier de configuration Compose ressemblera à ce qui suit. Cette configuration exécute une instance WordPress en utilisant le wordpress conteneur hors du Docker Hub. Cependant, cela dépend d’une base de données MySQL, qui est également créée par Compose.

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: rootpasswordchangeme
       MYSQL_DATABASE: wordpress
       MYSQL_USER: usernamechangeme
       MYSQL_PASSWORD: passwordchangeme

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: usernamechangeme
       WORDPRESS_DB_PASSWORD: passwordchangeme
volumes:
    db_data:

Jetons un œil au format de ce fichier. Tout d’abord, un numéro de version, car la syntaxe peut changer en fonction de la version que vous utilisez.

Ensuite, une liste de services. Le premier est nommé «db» et utilise le mysql:5.7 conteneur, configuré pour toujours redémarrer et avec des variables d’environnement pour configurer la base de données avec un utilisateur et un mot de passe. Pour conserver les données lors des redémarrages, cette image est configurée avec un volume Docker monté dans le répertoire de données MySQL.

L’autre service est «wordpress», qui dépend du service de base de données, garantissant que Docker s’assurera que la base de données est démarrée avant de s’exécuter. Il expose le port 80 en tant que port 8000 et définit certaines variables d’environnement afin qu’il puisse se connecter à MySQL. Notez que l’hôte de la base de données est défini sur db:3306, qui indique au conteneur WordPress de se connecter au service «db».

Enfin, les volumes sont définis pour le stockage persistant. Si vous le souhaitez, vous pouvez également définir une mise en réseau personnalisée pour les conteneurs. Il existe de nombreuses options étendues que vous pouvez configurer, donc si vous cherchez à faire quelque chose de spécifique, vous devriez consulter la documentation de Docker Compose.

Une fois configuré, démarrer ce service est facile. Exécutez simplement docker-compose up, qui extraira tous les conteneurs requis et démarrera vos services.

docker-compose up -d

Et vous devriez voir les services en cours d’exécution sur le système avec docker ps. Dans ce cas, vous verrez WordPress opérationnel correctement.

Construire avec Docker Compose

Docker Compose peut également être utilisé dans un projet Dockerfile et peut être configuré pour créer et exécuter une image localement plutôt que de la tirer depuis Docker Hub.

Pour ce faire, il vous suffit d’ajouter un build section sur le service. Vous pouvez définir différents répertoires de contexte, ainsi que différents fichiers Docker pour différentes images.

version: "3.8"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
    image: imagename:tag

Dans ce cas, le image: variable est également définie, mais ici, elle est utilisée pour baliser l’image créée par Docker Compose.

★★★★★