‫Nous avons précédemment parlé du fichier Docker Compose YAML et dans cette conférence, nous allons parler
‫de la ligne de commande de composition. Les conditions requises pour cette leçon sont comme les autres sections de cette
‫section où vous devez connaître les images et les conteneurs, et comment les utiliser ainsi que les concepts qui les entourent, dans les sections précédentes, de sorte
‫que vous puissiez utiliser toutes celles contenues dans la commande de composition et le YAML. fichier. L'outil de ligne de commande
‫Docker Compose est en réalité distinct de l'outil Docker.
‫C'est en fait un binaire séparé. Si vous utilisez Docker pour Windows ou Docker pour Mac,
‫il est livré avec cela.
‫Si vous utilisez également la boîte à outils sous Windows 7, elle est fournie avec.
‫Mais si vous êtes sous Linux, vous devez le télécharger séparément et vous pouvez l'obtenir sur GitHub. com / docker / compose, mais vous
‫pouvez également le rechercher simplement sur Google. Un lien apparaîtra dans les références de
‫cette section.
‫Mais je devrais dire très vite que ce n’est pas conçu pour être un outil de production.
‫C'est super idéal pour le développement local et le test très rapide de choses qui pourraient autrement être complexes à taper dans un
‫tas de commandes à partir de la ligne de commande. Deux commandes courantes que nous utilisons seront la
‫composition docker, ce qui est de loin probablement ce que vous allez taper 90% du temps.
‫C'est un guichet unique.
‫Il s’agit essentiellement d’une commande unique permettant de tout exécuter dans le fichier de composition, y compris la création de volumes, la création de réseaux, le
‫démarrage de tous les conteneurs avec toutes leurs options de configuration. Ensuite, pour nettoyer lorsque vous
‫avez terminé, le menu fixe, ce que beaucoup de gens oublient de
‫faire, nettoiera après vous. Cela éliminera les conteneurs, supprimera les réseaux et les volumes devenus inutiles.
‫Il vous permet, avec ces deux commandes, d’intervenir rapidement dans différents environnements de développement.
‫C’est là que j’attire vraiment l’attention des développeurs habitués à utiliser vagabond et d’autres outils
‫pour personnaliser localement les environnements complexes dont ils ont besoin pour leur développement.
‫Une fois que je leur ai montré Docker Compose, le fichier de composition et la facilité d'utilisation avec
‫un fichier Docker, il commence vraiment à indiquer que cela pourrait être un moyen plus efficace et plus fiable de configurer
‫leurs environnements.
‫Et cela ne nécessite pas de temps pour configurer différents ordinateurs
‫virtuels ni la complexité de la gestion d'un environnement de machine virtuelle.
‫Juste pour vous donner un avant-goût, si vous aviez un projet dans lequel vous aviez le processus typique d'intégration des développeurs qui
‫consistait à apprendre à obtenir les bons outils pour leur système, les bonnes machines virtuelles téléchargées
‫et les bons add-ons. et toutes les choses pour lesquelles ils devraient normalement construire un
‫environnement répliqué, avec Docker Compose, c’est aussi simple
‫que de cloner l’environnement contenant votre fichier de composition à partir d’un repo quelque part, puis d’exécuter la
‫commande docker compose up.
‫Cela peut vraiment être aussi simple.
‫Faisons un saut et jouons. Je suis dans le répertoire Compose Sample 2. Le répertoire compose sample 1 était
‫simplement quelques exemples visuels que nous avons montrés dans la dernière leçon.
‫Mais dans celui-ci, nous pourrons exécuter celui-ci et obtenir une sortie rapide.
‫Je vais juste faire un docker composer.
‫Eh bien, en fait, avant de faire cela, laissez-moi vous montrer ce que c'est.
‫Cela a deux services, ou deux conteneurs, et le premier est un serveur Nginx qui est configuré comme un
‫proxy dans ce cas.
‫Et cela va être à l'écoute sur mon port 80 sur ma machine locale.
‫Vous remarquerez qu'il existe une commande de volume dans laquelle j'ai en fait effectué un montage de liaison sur un fichier de ce répertoire
‫appelé fichier de configuration nginx. Il s'agit en réalité d'un petit fichier très simple.
‫Ce n'est pas nécessairement important que nous sachions encore comment fonctionne ce fichier. Cela montre simplement comment, dans ce
‫cas, je crée un fichier dans mon environnement local. Disons que ce répertoire est un référentiel
‫Git qui stocke ces fichiers de configuration pour moi. Cela me permet de mapper ce fichier dans le conteneur et, à la fin,
‫vous verrez qu'il dit «ro», ce qui signifie lecture uniquement, ce qui signifie que je ne peux pas le modifier dans le conteneur.
‫Ce n'est pas nécessairement nécessaire ici. Je voulais juste vous montrer que c'est
‫comme cela que vous feriez dans ce cas. Ce fichier de configuration indique en fait
‫à Nginx: "Au lieu
‫d'être un serveur Web, j'aimerais que vous soyez un proxy inverse et que vous vous asseyiez devant un autre
‫serveur", qui dans ce cas nous appelons notre serveur Web, avec son service. nom, et il exécute le serveur Apache 2, qui est l’image
‫httpd du référentiel d’images officiel sur Docker Hub.
‫Vous pouvez également voir, en haut, que j'ai spécifié une version ici. C'est comme ça que je ferais ça.
‫À l'intérieur de la ligne d'image.
‫Donc, ce qui devrait arriver, c’est que lorsque je tape ce docker composé, il doit démarrer les deux conteneurs. Il convient de créer un réseau
‫privé pour les deux.
‫Il liera automatiquement monter ce fichier.
‫Cela va ouvrir le port, et il va commencer à décharger les journaux sur mon écran.
‫Vous verrez comment, dit-il, «créez ces deux conteneurs. C'est en fait la
‫création du réseau.
‫Vous remarquerez dans mon dossier que je n'ai pas spécifié de zone de réseau ni de zone de volumes car elles ne sont
‫pas réellement nécessaires.
‫Ils ne sont nécessaires que si j'ai besoin de personnaliser le réseau, par exemple, changer les adresses IP
‫par défaut ou le pilote de réseau utilisé.
‫Ou dans le cas des volumes, je peux créer des volumes nommés ou utiliser un pilote de volume différent. Nous
‫aborderons tout cela ultérieurement dans des sections avancées.
‫Juste pour que vous sachiez, c'est aussi simple que ces fichiers peuvent être.
‫Vous n'avez normalement pas besoin de tout ça.
‫Ces fonctionnalités sont là si vous en avez besoin, mais généralement, ces petites commandes très simples comme celle-ci vous
‫permettront de continuer.
‫Qu'est-ce que j'ai fait? C'est maintenant mon serveur Apache et mon serveur Nginx.
‫Vous remarquerez que les journaux sont réellement colorés ici.
‫C’est une fonctionnalité intéressante de Compose que Docker n’a pas forcément à offrir
‫dès le départ, c’est qu’il enregistrera tous les conteneurs qu’il exécute à l’écran au premier plan.
‫Je peux toujours faire la même chose que avec Docker et exécuter docker compose
‫-d, ce qui le fera en arrière-plan. Mais il est agréable de voir, lorsque je développe ou teste des choses localement,
‫que mes journaux sont affichés à l'écran.
‫Si je saute sur mon navigateur, puis sur localhost, vous verrez qu'il est écrit: «Ça marche. «C'est le serveur
‫Apache qui répond, pas le serveur Nginx.
‫Le trafic passe actuellement par le proxy inverse Nginx.
‫Cela répète le trafic sur le serveur Apache. Le serveur Apache répond avec son fichier HTML
‫de base par défaut car nous n'avons rien changé.
‫Ensuite, le Nginx me le répète.
‫Il s’agit donc de votre serveur Web de base, de la configuration du proxy Web.
‫Vous pouvez dire que le trafic les a tous les deux touchés. En réalité, ils fonctionnent via le
‫proxy car le
‫proxy est en réalité d'une couleur différente ici. Les journaux consomment ici une couleur aléatoire pour chaque conteneur de mon installation afin que je
‫puisse facilement voir ce qui se passe.
‫Si je clique sur rafraîchir plusieurs fois, vous verrez le trafic apparaître. Ensuite, il frappe d'abord le proxy, puis
‫le serveur Web principal.
‫Si je voulais arrêter ceci ici, j'appuyais sur Control c pour arrêter la composition sur mon écran.
‫Je pourrais en fait l'exécuter à nouveau avec l'option -d pour l'exécuter en arrière-plan.
‫Vous pouvez voir ici que je peux le rafraîchir et il est toujours là. Je peux créer un journal de travail pour afficher les mêmes journaux que ceux que
‫j'ai vus il y a quelque temps.
‫Un grand nombre des commandes auxquelles vous êtes peut-être habitué dans Docker le sont également dans Docker Compose. Vraiment ce que Compose est
‫en train de faire, c’est de communiquer avec l’API Docker en
‫arrière-plan, au nom de la CLI Docker. C'est un peu comme si le remplaçant de la CLI Docker communiquait toujours
‫avec l'API du serveur Docker dans le backend.
‫Bien sûr, la grande aide ici, aide de docker compose, me montre toutes les commandes que je peux exécuter.
‫Vous verrez que beaucoup d'entre eux ont l'air vraiment familiers car ils sont l'équivalent de la
‫commande docker en utilisant simplement le contexte de la configuration du fichier de composition.
‫Je veux nettoyer tout ça parce qu'ils fonctionnent encore. Je peux faire un ps de docker ici, ce qui me montrera
‫que mes deux conteneurs fonctionnent.
‫Je peux faire un docker top top pour lister tous les services qui y sont exécutés dans
‫une sortie formatée agréable.
‫C'est plutôt cool.
‫Enfin, je peux créer un docker pour arrêter et nettoyer mes fichiers que je viens de commencer.
‫Vous verrez que cela me dit ce qui se passe là-bas. Tout nettoyé.
‫Tellement bon.
‫Ceci est juste un petit goût.
‫Nous utiliserons beaucoup Docker Compose tout au long de ce cours pour
‫le développement local et les tests. Nous continuerons ensuite à utiliser les fichiers Docker Compose au fur
‫et à mesure de la transition vers les problèmes de production liés au déploiement d'environnements complexes avec un simple fichier YAML.