‫Okay, ich werde jeden dieser Services basierend auf dieser Architektur durchgehen
‫und diese App im Handumdrehen erstellen. Ich werde die Befehle hier in der Readme-Datei eingeben, da dies
‫für mich ein logischer Ort zu sein scheint. Und dann schneide ich sie aus und füge sie in meinen
‫Knoten ein.
‫Wenn Sie sich erinnern, habe ich hier einen 3-Knoten-Schwarm. Wenn ich einen Docker-Knoten mache, werden
‫Sie sehen, dass ich hier drei Knoten habe. Sie sind alle Manager-Knoten.
‫Ich habe offensichtlich keine laufenden Container und keine Dienste. Als Erstes weiß ich ganz
‫oben, dass ich Netzwerke brauche und ein Volume brauche.
‫Also kann ich wahrscheinlich die Netzwerke aus dem Weg räumen und das kann ich wahrscheinlich beflügeln. Ich kann
‫Docker-Netzwerk erstellen d Overlay eingeben. Denken Sie daran, dass das Overlay-Netzwerk die einzige Art von Netzwerk ist,
‫die wir in einem Swarm verwenden können, da wir mit Overlay Knoten überbrücken können, als wären sie alle im lokalen Netzwerk.
‫Und dann möchte ich es Backend nennen.
‫Und dann möchte ich genau dasselbe tun, es nur Frontend nennen.
‫An diesen beiden Netzwerken ist nichts Besonderes.
‫Wir werden nur unsere verschiedenen Dienste in den einen oder anderen Bereich unterteilen, um zu helfen, sich wie eine
‫kleine Firewall zu verhalten, die Trennung zum Schutz bietet.
‫Bei dieser
‫Abstimmung weiß ich, dass ich einen Docker-Dienst erstellen muss, und ich muss ihn benennen. Und dann muss ich den Port 80 bis 80 im Container veröffentlichen
‫und er muss sich in einem bestimmten Netzwerk befinden. Also, Netzwerk-Frontend.
‫Ich brauche zwei Repliken.
‫Also, Replik zwei. Und dann kann ich diesen Namen auch einfach kopieren und einfügen.
‫Jetzt werde ich alle erstellen, bevor ich sie tatsächlich bereitstelle.
‫Ich werde dieses hier unten kopieren. Dieser wird genannt werden ... es wird nicht Abstimmung genannt,
‫es wird Redis genannt.
‫Sie müssen sich nicht darum kümmern, irgendwelche Ports darauf zu veröffentlichen.
‫Es wird im Frontend-Netzwerk sein.
‫Ich möchte zwei Replikate und nenne es dann "Redis Three Two".
‫Hier unten befindet sich der Docker-Dienst "create name worker" in zwei Netzwerken. Ich muss das Netzwerk-Frontend ausführen
‫und ... Hoppla.
‫Ich schreibe, was ich sage ... Lassen Sie uns sehen, Netzwerk-Backend und dann nur eine Replik.
‫… Da eine Replik
‫die Standardeinstellung ist, muss ich keine Replik und keine Ports angeben.
‫Ich denke, das ist alles was ich dort brauche. Ich muss nur das Bild kopieren.
‫Okay, Docker-Dienst erstellen Name DB-Netzwerk-Backend.
‫Siehe, eine Replik.
‫Oh, ich muss diesen Band machen.
‫Hier ist die Sache mit der Lautstärke. Der Befehl -v ist nicht mit Docker-Diensten kompatibel. Aus verschiedenen Gründen sind
‫die Dienste komplexer als die typischen Docker-Vorgänge.
‫Und es gab damals Probleme und Einschränkungen mit dem -v.
‫Docker hat daraus gelernt und das Format verbessert. Aber es ist etwas ausführlicher und vielleicht
‫etwas schwieriger, sich an das Format zu erinnern, mit dem es angefangen hat.
‫Es ist auch in der Docker-Dokumentation noch nicht gut dokumentiert, da es als Befehl weniger
‫als ein Jahr alt ist. Also kopieren wir es einfach und fügen es ein. Wenn es für Sie keinen Sinn ergibt,
‫handelt es sich im Grunde genommen um diese Liste von Werten, die alle Teil eines einzelnen Mount-Befehls sind und bei denen es sich bei den Mindestwerten
‫um einen Typ, eine Quelle und ein Ziel handelt.
‫Es gibt auch andere Dinge, die Sie hinzufügen können, aber dies sind die einzigen drei, die wir in diesem Szenario benötigen.
‫Und Sie können sehen, dass meine Quelle nur ein benanntes Volume ist, da ich keine Schrägstriche darin habe.
‫Und wenn wir Schrägstriche gehabt hätten, wäre es ein Bind Mount gewesen und wir hätten einen anderen Typ
‫spezifizieren müssen.
‫Also hier unten --mount Typ Volume, Quell-DB-Daten, Ziel.
‫Ich denke das ist richtig.
‫Und dann können Sie einfach, Postgres 9. 4.
‫Und dann ist die letzte die Ergebnis-App.
‫Der Docker-Dienst erstellt also ein Netzwerk-Backend mit Namensergebnissen.
‫Veröffentlichen Sie den Port. Wir werden 5001 verwenden, um 80 im Container zu portieren.
‫Ich kann nur einen von ihnen führen. Übrigens, der einzige Grund, warum wir eines dieser
‫Programme ausführen, ist ein wenig bekanntes Problem in dieser App, da hier tatsächlich WebSockets verwendet werden und WebSockets eine
‫dauerhafte Verbindung erfordern.
‫Im Routing-Netz funktioniert WebSockets also noch nicht wirklich gut, da Sie immer wieder
‫zwischen Containern hin- und herwechseln und WebSocket dauerhaft auf einen bestimmten Container eingestellt sein muss.
‫Also, mit dieser App, was wir eigentlich haben sollten, ist ein Proxy davor, aber es ist noch nicht in dieser App, also werden sie es wahrscheinlich in
‫einer späteren Version aktualisieren und reparieren, so dass wir einen Proxy haben.
‫Auf diese Weise kann es überflüssig
‫werden und Sie gelangen sicher zum richtigen Container. Wir werden
‫dies kopieren und bis zum Ende einfügen. Mir ist gerade aufgefallen, dass mir der letzte Wert fehlt.
‫Okay, und dann fange ich oben an und kopiere und füge es einfach ein. Es sind bereits die Netzwerke angelegt.
‫Ja, das müssen Repliken sein. Lassen Sie mich das hier aktualisieren.
‫Repliken. Okay, wir werden die Redis erstellen. Na, bitte.
‫Also gut, ich habe das gemacht. Übrigens, Sie werden feststellen, dass ich eine Service-ID zurückerhalte, dies bedeutet jedoch
‫nicht, dass der Service tatsächlich ordnungsgemäß bereitgestellt wird.
‫Wir werden uns das gleich ansehen.
‫Lassen Sie mich den Rest da reinbringen.
‫Gut.
‫Jetzt, wo wir das haben, sollten wir den Rest unserer Befehle hier ausführen können. Der Docker-Service zeigt uns also
‫alle fünf. Und Sie werden feststellen, dass die Replikatnummern übereinstimmen.
‫Das ist ein gutes Zeichen.
‫Dies bedeutet, dass eine erfolgreich erstellt wurde.
‫Und wenn ich tiefer graben wollte, könnte ich einen Docker-Service für jeden einzelnen durchführen.
‫Also gut, dass man 28 Sekunden gelaufen ist.
‫redis ist eine minute gelaufen. db läuft 53 Sekunden. Abstimmung.
‫Arbeiter.
‫Und Sie werden hier im Worker sehen, dass wir einen fehlgeschlagenen Task haben, der heruntergefahren wurde, und dann einen, der ausgeführt wird.
‫Das läuft schon seit 47 Sekunden.
‫Okay, ich weiß eigentlich, warum das passiert ist, aber du weißt es vielleicht nicht, also müssten wir vielleicht ein Log machen.
‫Das ist jetzt auf Node2.
‫Eine experimentelle Funktion, die Sie über eine optionale Konfiguration in Docker aktivieren können, ist
‫die Durchführung der neuen experimentellen Funktion, Docker-Dienstprotokolle. Was tatsächlich die Protokolle von vielen verschiedenen Knoten zieht.
‫Hoffentlich wird es später in diesem Jahr in der nächsten Version von Docker veröffentlicht.
‫Aber im Moment ist es experimentell. Also musste ich es im etc docker daemon log oder daemon aktivieren.
‫JSON-Datei. Und genau so würden Sie ein Experiment ermöglichen.
‫Das gehört nicht dazu.
‫Das ist nur etwas, was ich getan habe, damit ich das ganz schnell zeigen kann.
‫Möglicherweise wird dieser Fehler angezeigt, und Sie denken, ich weiß nicht, warum dies geschieht.
‫Wir können uns dieses Protokoll ansehen. Also können wir einen Docker-Service-Log-Arbeiter machen ... Hoppla... protokolliert Arbeiter.
‫Und das ist, diesmal, mal sehen, das sind zwei verschiedene ...
‫Sie können hier sehen, dass dies eins ist, und dann ändert sich die Nummer. Eigentlich ja.
‫Das ist alles eins hier.
‫Es heißt kein solches Gerät oder Adresse.
‫Das bedeutet im Grunde genommen, dass ich einen Dienst erstellt habe, der nach einem DNS-Eintrag gesucht hat, der nicht existiert, weil
‫ich den anderen Dienst noch nicht erstellt habe. Und es hat genau das getan, was
‫es in „Dockerland“ tun soll. Wenn ein solcher Fehler auftritt, sollte die App abstürzen, da Docker die Dinge tatsächlich neu starten
‫und neu bereitstellen kann, bis die Apps nicht mehr abstürzen. Und sobald ich alle meine Dienste
‫gestartet habe, stürzte alles ab und alles funktioniert jetzt.
‫Und wir können das erkennen, indem wir einfach zurückgehen und den ps-Arbeiter anschauen. Wir sehen, dass es drei Minuten
‫lang erfolgreich gelaufen ist.
‫Schauen wir uns also unsere App an.
‫Wenn ich nur die IP-Adresse hochziehe, sollte ich die Hunde und Katzen bekommen. Ich werde Katzen wählen.
‫Und wenn ich dann auf dieselbe IP auf Port 5001 gehe, sollte ich die Ergebnis-App sehen. Das ist die App.
‫Wir wissen jetzt, dass es funktioniert, weil sich dies nur ändern kann, wenn es vollständig durchläuft,
‫wenn es vom Redis eingeholt und dann vom Worker verarbeitet und dann in die Datenbank gestellt wird.
‫So wissen wir, dass jeder unserer App-Services miteinander kommunizieren kann. Und wir können uns die Protokolle ansehen, wenn wir
‫wollten.
‫Aber das ist die Demo.