Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Der Spring Cloud Netflix Stack Grundkurs

Eine Docker-Compose-Datei für die Gesamtapplikation erstellen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Sobald Sie mehr als einen Microservice verwalten wollen, lohnt es sich, einen Blick auf Docker-Compose zu werfen. Dieses Tool ermöglicht Ihnen, alle Services einer Anwendung in einer Datei zusammen mit Port-Freigaben, Links und Abhängigkeiten zu definieren. In diesem Video erklärt Ihnen Karsten Samaschke die erforderliche Vorgehensweise, um Ihr Gästebuch-Projekt erfolgreich zum Abschluss zu bringen.

Transkript

Schon, wenn Sie nur einen oder zwei Services zu verwalten haben, ist es oftmals einfacher, das Ganze über Docker-Compose abzuwickeln, denn da benötigen Sie nur eine einzelne Datei, die Sie auch speichern können, die Sie weitergeben können, um Ihre Services zu managen. In diesem Video werden wir uns damit auseinandersetzen, wie wir für unsere sechs Services eine "docker-compose.yml"-Datei erstellen können bzw. eine existierende Datei entsprechend anpassen können, Die Datei, die Sie hier vor sich sehen, ist die Datei, die es schon beim Basisprojekt, auf dem unser Gästebuch basiert, gibt. Und die werden wir nun einmal anpassen. Der allererste Schritt besteht nun einmal darin, dass wir oberhalb des Frontend-Services einen weiteren Service, den Discovery-Service, definieren. Dieser Service muss deswegen als erster stehen, weil alle anderen Services eine Abhängigkeit von ihm haben. Das Image, was wir verwenden, ist, "guestbook-discovery". Der Containername, der also automatisch vergeben wird, ist "gb-discovery". Es gibt ein Portmapping, und zwar vom Port 8761 des Containers auf 8761, der Umgebung. also des Hosts. Der Frontend-Service muss nun keine Portfreigabe mehr haben, stattdessen bekommt er eine Linkangabe. Und zwar verweist er auf den Service mit dem Namen "Discovery". Bevor wir den Backend-Service konfigurieren können, kopieren wir einfach einmal seine Einstellungen und fügen einen Service zusätzlich ein, nämlich den Mail-Service, weil der Backend-Service nämlich auf den Mail-Service zugreifen muss, muss der entsprechende Service nämlich auch vorher definiert sein. Als Image verwenden wir "guestbook-mail". Der Containername ist "gb-mail". Der Mailservice benötigt keine Portfreigabe, sondern bloß den Verweis auf den Discovery-Service. Analoges gilt für den Backend-Service, nur benötigt der halt noch zusätzlich den Verweis auf den Mail-Service. Der fünfte Service, den wir hier in dieser Datei nun anlegen, ist der Proxy-Service. Der basiert auf dem "guestbook-proxy"-Image, Containername ist "gb-proxy". Er benötigt Links auf Discovery, auf Frontend und auf Backend. Und darüber hinaus benötigt er ebenfalls noch eine Portfreigabe, nämlich der Port 8000 des Containers wird auf den Port 8000 des Hosts gemappt. Und der letzte Service, den wir noch anlegen müssen, ist der Service mit dem Namen "Hystrix". Der basiert auf dem "guestbook-hystrix-stream"-Image. Der Name, den wir ihm geben, ist "gb-hystrix". Portfreigabe hier ist 12000 auf 12000 und dieser Service benötigt Zugriff auf Discovery und Backend-Service. Würden wir nun diese Datei so wie sie ist nehmen und mit Hilfe von Docker-Compose in Betrieb setzen, würden wir in ein gewisses Problem laufen, denn alle Services würden zeitgleich gestartet werden. Das ist etwas, was wir natürlich idealerweise vermeiden sollten. Deswegen gibt es eine weitere Information, die wir hier erfassen können, nämlich "depends_on". Und damit können wir angeben, auf welche Services dieser jeweilige Service warten muss, bis er starten kann. Das sind die Servicenamen, wie wir sie hier vergeben haben. In jedem Fall benötigen wir bei fast allen Services eine Abhängigkeit auf den Discovery-Service. Und der Hystrix-Service sollte auch noch auf den Start des Backend-Services warten. Der Proxy-Service hängt vom Backend-Service, vom Discovery-Service und vom Frontend-Service ab. Der Backend-Service hängt vom Discovery-Service und vom Mail-Service ab. Mail hängt eigentlich nur vom Discovery-Service ab. Analoges gilt für den Frontend-Service. Und der Discovery-Service selber hat keine Abhängigkeit. Nachdem wir auch diese Informationen erfasst haben, ist es nun tatsächlich an der Zeit, unser Docker-Compose-File zu nutzen, um alle Services in definierter Reihenfolge automatisch ohne weiteres Eingreifen zu starten. Wir öffnen also die Eingabeaufforderung, über die wir Docker bedienen können und wechseln in das Verzeichnis, in dem sich die "docker-compose.yml"-Datei befindet. Nun rufen wir in diesem Verzeichnis "docker-compose" auf und geben als Parameter "up" an. Damit sagen wir, dass wir die im aktuellen Verzeichnis befindliche Datei starten wollen bzw. die Services, die da drin definiert sind. Und als Zweitparameter geben wir noch "-d" an. Dadurch läuft das Ganze im Hintergrund. Wir werden nun eine Weile warten müssen, bis die Services dann tatsächlich auch verfügbar sind. Wir können das über "docker ps" auch überprüfen, ob die Services laufen, ob sie möglicherweise beim Start schon Probleme hatten oder nicht. Das scheint nicht der Fall zu sein. Jetzt warten wir einfach ein paar Sekunden, in aller Regel weniger als 30 bis maximal 60 Sekunden, und rufen danach einmal Eureka auf und anschließend das Gästebuch. Ich habe in der Zwischenzeit Eureka einmal aufgerufen. Und wir sehen, bisher sind die Services noch nicht alle da. Die starten alle nacheinander jetzt hoch. Inzwischen sind alle fünf Services, die sich mit Eureka registrieren sollten, dann auch vorhanden, d. h., wir können nun das Gästebuch selber aufrufen. Nach einigen Sekunden ist das geladen und wir können wie üblich einen Eintrag hinzufügen und diesen Eintrag dann speichern. Und wir werden sehen, dass alles wie gehabt funktioniert, nur das Ganze für uns nun wesentlich einfacher umzusetzen ist. In diesem Video haben wir uns damit auseinandergesetzt, wie wir das Management von Services auf Docker-Ebene mit Hilfe von Docker-Compose doch um einiges erleichtern können. Es war jetzt lediglich notwendig, dass wir einmal die Konfigurationsdatei "docker-compose.yml" schreiben bzw. anpassen. Und danach konnten wir die Services mit nur einem einzigen Aufruf auf der Kommandozeile starten. Der große Vorteil von Docker-Compose ist, dass wir die Reihenfolge und die Abhängigkeiten einmal fest hinterlegen können und diese Informationen dann zusammen mit den Images ggfs. auch weitergeben und weiterverwenden können.

Der Spring Cloud Netflix Stack Grundkurs

Lernen Sie den Open Source Cloud Stack und seine vielfältigen Einsatzmöglichkeiten kennen.

2 Std. 5 min (13 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:06.03.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!