‫Wir haben zuvor über die Docker Compose YAML-Datei gesprochen und in dieser Vorlesung werden
‫wir über die Compose-Befehlszeile sprechen. Die Anforderungen für diese Vorlesung sind wie für den Rest dieses
‫Abschnitts, in dem Sie die Bilder und Container sowie deren Verwendung und die zugehörigen Konzepte aus den vorherigen Abschnitten genau kennen müssen, damit
‫Sie alle im Befehl compose und in der YAML enthaltenen Elemente verwenden können Datei. Das Docker Compose-Befehlszeilentool
‫ist nicht mit dem Docker-Tool identisch.
‫Es ist eigentlich eine separate Binärdatei. Wenn Sie Docker für Windows oder Docker für Mac verwenden,
‫ist dies bereits im Lieferumfang enthalten.
‫Wenn Sie die Toolbox auch unter Windows 7 verwenden, wird sie mitgeliefert.
‫Aber wenn Sie unter Linux arbeiten, müssen Sie es separat herunterladen und das können Sie bei GitHub bekommen. com / docker / compose, aber Sie
‫können auch einfach bei Google danach suchen. In den Referenzen für diesen Abschnitt finden Sie
‫einen Link.
‫Aber ich sollte ganz schnell feststellen, dass es sich nicht um ein Werkzeug für die Produktion handelt.
‫Es ist ideal für die lokale Entwicklung und das schnelle Testen von Dingen, bei denen es ansonsten schwierig sein könnte,
‫eine Reihe von Befehlen über die Befehlszeile einzugeben. Zwei gebräuchliche Befehle, die wir verwenden,
‫sind docker compose up, was Sie wahrscheinlich 90% der Zeit eingeben werden.
‫Es ist ein One-Stop-Shop.
‫Es ist im Grunde genommen ein einziger Befehl, mit dem Sie alles in der Erstellungsdatei ausführen können, einschließlich des Erstellens von Volumes, des Erstellens von
‫Netzwerken und des Startens aller Container mit all ihren Konfigurationsoptionen. Wenn Sie fertig sind,
‫räumt der Hafenarbeiter nach dem Aufräumen auf, was viele Leute
‫tatsächlich vergessen haben. Container werden entfernt, nicht mehr benötigte Netzwerke und Volumes werden entfernt.
‫Mit diesen beiden Befehlen können Sie schnell in verschiedene Umgebungen springen und diese für die Entwicklung verlassen.
‫Dies ist der Punkt, an dem Entwickler, die es gewohnt sind, Vagrant Up und andere Tools zu verwenden,
‫um komplizierte Umgebungen lokal anzupassen, die sie für die Entwicklung benötigen, die Aufmerksamkeit auf sich ziehen.
‫Nachdem ich ihnen Docker Compose und die Compose-Datei gezeigt habe und wie einfach sie zusammen mit
‫einer Docker-Datei zu verwenden sind, wird ihnen sofort klar, dass dies eine bessere und zuverlässigere Möglichkeit ist, ihre
‫Umgebungen einzurichten.
‫Außerdem ist keine Zeit zum Einrichten verschiedener VMs
‫oder die Komplexität der Verwaltung einer virtuellen Maschinenumgebung erforderlich.
‫Nur um Ihnen einen kleinen Vorgeschmack zu geben, wenn Sie ein Projekt hatten, bei dem es um den typischen Onboarding-Prozess für neue Entwickler
‫ging, bei dem es darum ging, die richtigen Tools für das jeweilige System und die richtigen heruntergeladenen virtuellen
‫Maschinen sowie die richtigen Add-Ons zu erlernen Und all die Dinge, für die sie normalerweise nur
‫eine replizierte Umgebung erstellen müssten: Mit Docker Compose ist
‫es so einfach, die Umgebung zu klonen, in der Ihre Compose-Datei von einem Repository irgendwo abgelegt ist, und dann
‫den Docker Compose-Befehl auszuführen.
‫So einfach kann es sein.
‫Lass uns reinspringen und herumspielen. Ich bin im Verzeichnis compose sample 2. Das Verzeichnis compose sample 1 bestand
‫lediglich aus einigen visuellen Beispielen, die wir in der letzten Vorlesung gezeigt haben.
‫Aber in diesem Fall können wir dieses Programm ausführen und eine schnelle Ausgabe erhalten.
‫Ich werde einfach einen Hafenarbeiter zusammenstellen.
‫Bevor wir das machen, möchte ich Ihnen nur zeigen, was es ist.
‫Dies hat zwei Dienste oder zwei Container, und der erste ist ein Nginx-Server, der in diesem Fall
‫als Proxy konfiguriert ist.
‫Und das wird auf meinem Port 80 auf meinem lokalen Rechner zuhören.
‫Sie werden feststellen, dass es dort einen Volume-Befehl gibt, mit dem ich tatsächlich eine Bindung an eine Datei in diesem Verzeichnis, die als
‫Nginx-Konfigurationsdatei bezeichnet wird, herbeigeführt habe, und es ist wirklich eine sehr einfache kleine Datei.
‫Es ist nicht unbedingt wichtig, dass wir wissen, wie diese Datei noch funktioniert. Es zeigt nur, wie ich in diesem
‫Fall tatsächlich eine Datei in meiner lokalen Umgebung aufnehme. Angenommen, dieses Verzeichnis ist ein Git-Repository,
‫in dem diese Konfigurationsdateien für mich gespeichert sind. Ich kann diese Datei dem Container zuordnen, und am Ende
‫wird "ro" angezeigt, was bedeutet, dass nur Lesezugriff besteht und ich sie nicht im Container ändern kann.
‫Das ist hier nicht unbedingt erforderlich. Ich wollte dir nur zeigen, dass
‫du das in diesem Fall so machen würdest. Diese Konfigurationsdatei sagt eigentlich zu Nginx:
‫"Anstatt ein Webserver zu
‫sein, möchte ich, dass Sie ein Reverse-Proxy sind und vor einem anderen Server sitzen". In diesem Fall
‫rufen wir unseren Webserver mit seinem Dienst an Name, und es wird der Apache 2-Server ausgeführt, bei dem es sich um das httpd-Image
‫aus dem offiziellen Image-Repository von Docker Hub handelt.
‫Sie können auch oben sehen, dass ich hier eine Version angegeben habe. So würde ich das machen.
‫Innerhalb der Bildzeile.
‫Was also passieren sollte, ist, wenn ich diesen Docker zusammensetze, sollte er beide Container starten. Es sollte ein privates Netzwerk für
‫die beiden erstellt werden.
‫Es wird automatisch gebunden, um diese Datei bereitzustellen.
‫Der Port wird geöffnet, und es werden Abmeldungen auf meinem Bildschirm ausgegeben.
‫Sie werden sehen, wie dort diese beiden Container entstehen. 'Es schafft tatsächlich
‫das Netzwerk.
‫Sie werden in meiner Datei bemerken, dass ich keinen Netzwerk- oder Volume-Bereich angegeben habe, da diese nicht wirklich
‫erforderlich sind.
‫Sie sind nur erforderlich, wenn ich einige benutzerdefinierte Aufgaben im Netzwerk ausführen muss, z. B.
‫die Standard-IP-Adressen oder den verwendeten Netzwerktreiber.
‫Im Falle von Volumes kann ich auch benannte Volumes erstellen oder einen anderen Volume-Treiber verwenden, worauf wir später
‫in den erweiterten Abschnitten noch eingehen werden.
‫Nur damit Sie wissen, wie einfach diese Dateien sein können.
‫Normalerweise brauchst du das ganze Zeug nicht.
‫Diese Funktionen gibt es, wenn Sie sie brauchen, aber normalerweise bringen Sie diese sehr einfachen, kleinen
‫Befehle zum Laufen.
‫Was habe ich gemacht? Dies ist jetzt mein Apache-Server und mein Nginx-Server.
‫Sie werden feststellen, dass die Protokolle hier tatsächlich farbig sind.
‫Das ist eine nette Funktion von Compose, die Sie bei Docker nicht
‫unbedingt sofort nutzen müssen. Es protokolliert alle Container, die auf dem Bildschirm ausgeführt werden, im Vordergrund.
‫Ich kann immer das Gleiche tun wie mit Docker und Docker Compose -d
‫ausführen, wodurch es im Hintergrund ausgeführt wird. Aber es ist schön zu sehen, wenn ich Dinge vor Ort entwickle oder teste, dass
‫ich meine Protokolle direkt auf dem Bildschirm habe.
‫Wenn ich zu meinem Browser wechsle und dann zu localhost gehe, werden Sie feststellen, dass dort steht: „Es funktioniert. Das ist eigentlich
‫die Antwort des Apache-Servers, nicht des Nginx-Servers.
‫Der Datenverkehr läuft tatsächlich über den Nginx-Reverse-Proxy.
‫Der Datenverkehr zum Apache-Server wird wiederholt. Der Apache-Server antwortet mit seiner
‫Standard-HTML-Basisdatei, da wir nichts geändert haben.
‫Dann wiederholt der Nginx es mir.
‫Es ist also Ihr grundlegender Webserver, die Web-Proxy-Konfiguration.
‫Sie können feststellen, dass der Verkehr beide traf. Sie arbeiten tatsächlich über den Proxy,
‫da der
‫Proxy hier tatsächlich eine andere Farbe hat. Die Protokolle werden hier mit einer zufälligen Farbe für jeden Container in meinem Setup ausgepumpt, damit
‫ich leicht sehen kann, was los ist.
‫Wenn ich mehrmals auf "Aktualisieren" drücke, wird der Datenverkehr angezeigt. Dann trifft es zuerst den Proxy und
‫dann den Backend-Webserver.
‫Wenn ich dies hier beenden wollte, drücke ich die Strg-Taste c, um die Komposition auf meinem Bildschirm zu beenden.
‫Ich könnte es tatsächlich wieder mit -d ausführen, um es im Hintergrund auszuführen.
‫Sie können hier sehen, dass ich es auffrischen kann und es immer noch da ist. Ich kann von einem Docker Protokolle erstellen lassen, um die gleiche Ausgabe von Protokollen zu
‫sehen, die ich vor einiger Zeit gesehen habe.
‫Viele der Befehle, mit denen Sie in Docker möglicherweise vertraut sind, befinden sich auch in Docker Compose. Compose kommuniziert
‫im Hintergrund im Namen der
‫Docker-CLI mit der Docker-API. Es ist eine Art Ersatz für die Docker-CLI, die noch
‫mit der Docker-Server-API im Backend kommuniziert.
‫Natürlich zeigt die große Hilfe hier, Docker Compose Help, mir alle Befehle, die ich ausführen kann.
‫Sie werden feststellen, dass viele dieser Befehle sehr vertraut sind, da sie dem
‫Docker-Befehl entsprechen, der nur den Kontext der Konfiguration der Erstellungsdatei verwendet.
‫Ich möchte das alles aufräumen, weil sie noch laufen. Ich kann hier ein Docker-Ps erstellen, das mir zeigt, dass meine
‫beiden Container ausgeführt werden.
‫Ich kann ein Docker-Compose-Top erstellen, um tatsächlich alle darin ausgeführten Dienste in einer gut
‫formatierten Ausgabe aufzulisten.
‫Das ist ziemlich toll.
‫Dann kann ich endlich eine Docker-Komposition machen, um meine gerade begonnenen Sachen zu stoppen und aufzuräumen.
‫Du wirst sehen, dass es mir sagt, was es dort getan hat. Alles aufgeräumt.
‫So großartig.
‫Dies ist nur ein kleiner Vorgeschmack.
‫Wir werden Docker Compose im weiteren Verlauf dieses Kurses häufig für
‫lokale Entwicklungs- und Testzwecke einsetzen. Dann werden wir weiterhin die Docker Compose-Dateien
‫verwenden, um beim Übergang in die Produktionsumgebung komplexe Umgebungen mit einer einfachen YAML-Datei bereitzustellen.