‫Bon,
‫ce que je vais faire, c'est que je vais parcourir chacun de ces services en fonction de cette architecture
‫et que je vais créer cette application à la volée. En fait, je vais taper les commandes ici dans le fichier Lisez-moi, parce que
‫cela me semble un endroit logique pour le faire. Et puis je vais les couper et les coller dans
‫mon noeud.
‫Si vous vous en souvenez, j'ai un Swarm à 3 nœuds ici. Si je fais un nœud docker
‫ls, vous verrez que j’ai trois nœuds ici. Ce sont tous des nœuds de gestion.
‫Je n'ai aucun conteneur en cours d'exécution, et aucun service, évidemment. Tout d’abord, je sais au sommet,
‫c’est que j’ai besoin de réseaux, et j’ai besoin d’un volume.
‫Donc, je peux probablement éliminer les réseaux et je peux probablement en parler. Je peux taper
‫docker network create d overlay. N'oubliez pas que le réseau en superposition est le seul type de réseau que
‫nous pouvons utiliser dans un Swarm, car il nous permet de couvrir plusieurs nœuds, comme s'ils se trouvaient tous sur le réseau local.
‫Et puis je veux l'appeler backend.
‫Et puis, je veux faire la même chose, appeler seulement frontend.
‫Maintenant, il n'y a rien de spécial en soi sur ces deux réseaux.
‫Nous allons simplement segmenter nos différents services en un ou l'autre pour nous aider à agir comme
‫un petit pare-feu qui sépare pour la protection.
‫Sur ce vote un,
‫je sais que je dois créer un service Docker, et je dois le nommer, alors je pourrais aussi bien mettre un vote nom. Et puis, je dois publier le port 80 à 80 dans le
‫conteneur, et ce doit être sur un réseau spécifique. Donc, interface réseau.
‫J'ai besoin de deux répliques.
‫Donc, réplique deux. Et puis, je pourrais aussi bien copier et coller ce nom.
‫Maintenant, je vais aller de l'avant et créer tout cela avant de les déployer réellement.
‫Je vais en fait copier celui-ci ici. Celui-ci va s'appeler ... ça ne sera pas appelé vote,
‫ça va s'appeler Redis.
‫Vous n'avez pas à vous soucier de la publication de ports sur ce sujet.
‫Ça va être sur le réseau frontal.
‫Je veux deux répliques, et ensuite, je vais l’appeler, car trois, c’est l’image.
‫En bas, le service de création de nom Docker crée un nom de travailleur, va être sur deux réseaux. Je dois faire une interface réseau
‫et ... oups.
‫Je tape ce que je dis ... Voyons voir, backend réseau, puis un seul réplica.
‫… Parce qu'une réplique est la
‫valeur par défaut, je n'ai pas besoin de spécifier de réplique ni de port.
‫Je pense que c'est tout ce dont j'ai besoin. J'ai juste besoin de copier sur l'image.
‫Ok, le service Docker crée le nom backend du réseau db.
‫Voir, une réplique.
‫Oh, j'ai besoin de faire ce volume.
‫Voici la chose à propos du volume. La commande -v n'est pas compatible avec les services Docker. Parce que, pour diverses raisons,
‫les services seront plus complexes que votre docker typique.
‫Et il y avait des problèmes et des limites avec le -v de retour dans la journée.
‫Donc, Docker a tiré des leçons de cette expérience et amélioré le format. Mais il s'avère être un peu plus
‫verbeux et peut-être un peu plus difficile de se souvenir du format de départ.
‫Il se trouve également que la documentation de Docker n’est pas encore bien documentée, car il s’agit d’une
‫commande datant de moins d’un an. Donc, nous allons simplement copier et coller ceci. Si cela n’a aucun sens
‫pour vous, au fond, c’est cette liste de valeurs qui font toutes partie d’une seule commande de montage et les minimums
‫sont un type, une source et une cible.
‫Il y a aussi d'autres choses que vous pouvez ajouter, mais ce sont les trois seules dont nous avons besoin dans ce scénario.
‫Et vous pouvez voir que ma source est juste un volume nommé parce que je n’ai aucune barre oblique.
‫Et si nous avions eu des barres obliques, cela aurait été un montage lié et nous aurions dû spécifier un
‫type différent.
‫Donc, ici, volume de type --mount, données de base de données source, cible.
‫Je pense que c'est correct.
‫Et puis vous pouvez simplement, postgres 9. 4
‫Et puis le dernier est l'application de résultat.
‫Ainsi, le service Docker crée le nom du réseau de résultat.
‫Publier le port. Nous allons utiliser 5001 pour mettre en communication 80 dans le conteneur.
‫Je ne peux en diriger qu'un seul. En passant, la seule raison pour laquelle nous utilisons
‫l'une de ces applications est en fait un problème peu connu sur cette application: c'est qu'il s'agit en fait de WebSockets, et que WebSockets
‫nécessite une connexion persistante.
‫Ainsi, dans le maillage de routage, WebSockets n’est pas encore très bien car il va
‫continuer à vous permuter entre les conteneurs et que WebSocket doit toujours être sur un conteneur spécifique.
‫Donc, avec cette application, ce que nous devrions vraiment avoir, c'est un proxy devant elle, mais ce n'est pas encore dans cette application, alors probablement dans une version ultérieure, ils
‫la mettront à jour et la répareront pour que nous ayons un proxy.
‫De cette façon, il peut être redondant
‫et sûr que vous atteignez le bon conteneur. Nous allons
‫copier et coller ceci jusqu’à la fin. Je viens de me rendre compte que je manque la dernière valeur sur ceux-ci.
‫OK, puis je vais commencer par le haut et simplement copier et coller. Il a déjà créé les réseaux.
‫Oui, cela doit être des répliques. Laissez-moi mettre à jour cela ici.
‫Répliques. OK, nous allons créer le redis. Nous y voilà.
‫D'accord, créé celui-là. En passant, vous remarquerez que je récupère un ID de service, mais cela
‫ne signifie pas que le service est effectivement déployé.
‫Nous allons examiner cela dans une minute.
‫Laissez-moi obtenir le reste de ceux-ci là-bas.
‫D'accord.
‫Maintenant que nous avons cela, nous devrions pouvoir faire le reste de nos commandes ici. Donc, docker service ls nous les montre
‫tous les cinq. Et vous remarquerez que les numéros de répliques correspondent.
‫C'est bon signe.
‫Cela signifie qu’un a été créé avec succès.
‫Et si je voulais creuser plus profondément, je pourrais faire un ps de service de docker sur chacun d'eux.
‫D'accord, alors ça fait 28 secondes.
‫Redis a fonctionné une minute. la base de données est en cours d'exécution 53 secondes. vote.
‫ouvrier.
‫Et vous verrez ici dans le travailleur que nous avons une tâche qui a échoué et qui est arrêtée, puis une qui est en cours d'exécution.
‫Cela a fonctionné pendant 47 secondes.
‫Bon, je sais en fait pourquoi cela est arrivé, mais vous ne le savez peut-être pas, alors nous devrions peut-être faire un journal.
‫Maintenant, ceci est sur node2.
‫Une fonctionnalité expérimentale que vous pouvez activer via une configuration facultative dans Docker consiste à créer la
‫nouvelle fonctionnalité expérimentale, les journaux du service Docker. Ce qui tire réellement les journaux de nombreux nœuds différents.
‫Espérons que cela sera publié dans la prochaine version de Docker plus tard cette année.
‫Mais pour l'instant, c'est expérimental. Je devais donc l'activer dans le journal ou le démon du docker, etc.
‫fichier json. Et, juste pour que vous sachiez, c’est ainsi que vous autoriseriez une expérimentation.
‫Cela ne fait pas partie de ça.
‫C'est juste quelque chose que j'ai fait, juste pour pouvoir montrer cela très rapidement.
‫Vous voyez peut-être cette erreur et vous pensez que je ne sais pas pourquoi cela se produit?
‫Nous pouvons regarder ce journal. Donc, nous pouvons faire un journalier de service de docker ... Oops... journalier travailleur.
‫Et voici, voyons, ce sont deux choses différentes ...
‫Vous pouvez voir ici ceci en est un, puis le nombre change. En fait, oui.
‫C'est tout un ici.
‫Il ne dit aucun appareil ou adresse.
‫Cela signifie donc que j'ai créé un service qui recherchait un enregistrement DNS qui n'existait pas car je
‫n'avais pas encore créé l'autre service. Et il a fait ce qu'il est supposé
‫faire dans “Dockerland”, c'est-à-dire quand il y a une telle erreur, l'application devrait tomber en panne, car Docker peut réellement redémarrer et redéployer les
‫choses correctement jusqu'à ce que les applications ne se plantent pas. Et dès que tous mes services ont
‫été lancés, tout a cessé de planter et tout fonctionne maintenant.
‫Et nous pouvons le dire en revenant simplement en regardant le travailleur ps. Nous voyons que cela fonctionne avec
‫succès depuis trois minutes.
‫Alors jetons un coup d'oeil à notre application.
‫Si je viens juste de trouver l'adresse IP, je devrais avoir les chiens et les chats. Je vais voter les chats.
‫Et puis si je vais à cette même adresse IP sur le port 5001, je devrais voir l'application de résultats. C'est l'application.
‫Nous savons maintenant que cela fonctionne parce que la seule façon de changer les choses, c'est si cela continue jusqu'au
‫moment où il est rattrapé par le système redis, puis traité par le travailleur, puis placé dans la base de données.
‫Nous savons donc que chacun de nos services d’application peut se parler. Et nous pouvons regarder les journaux si nous le
‫voulions.
‫Mais c'est la démo.