Analyse des Implementierungsprozesses der Docker-Container-Orchestrierung

Analyse des Implementierungsprozesses der Docker-Container-Orchestrierung

In tatsächlichen Entwicklungs- oder Produktionsumgebungen werden Container häufig nicht unabhängig voneinander ausgeführt, und häufig müssen mehrere Container zusammen ausgeführt werden. Wenn Sie zu diesem Zeitpunkt weiterhin den Befehl „run“ verwenden, um den Container zu starten, ist dies sehr umständlich. In diesem Fall ist Docker-Compose eine gute Wahl. Docker-Compose kann zur Orchestrierung von Containern verwendet werden. In diesem Artikel wird die Verwendung von Docker-Compose erläutert. Dieser Artikel verwendet die Bereitstellung einer Open-Source-Website wie jpress als Beispiel, um den Lesern die Verwendung von Docker-Compose vorzustellen. jpress ist die Java-Version von WordPress, aber wir müssen nicht auf die Implementierung von jpress achten. Hier müssen wir es nur als normale Anwendung behandeln, um die Bereitstellung des Projekts abzuschließen.

Vorbereitung

Hierfür benötigen wir insgesamt zwei Container:

  • Kater
  • MySQL

Dann benötigen Sie das War-Paket von jpress, War-Paketadresse: jpress

Natürlich ist jpress hier nicht erforderlich. Der Leser kann auch andere Java-Projekte auswählen oder entsprechend seiner eigenen Situation eine einfache Java-Projektbereitstellung schreiben.

Schreiben einer Docker-Datei

Im Tomcat-Container müssen Sie zugehörige War-Dateien herunterladen, deshalb schreibe ich dazu eine Docker-Datei. Erstellen Sie in einem leeren Ordner ein Dockerfile mit folgendem Inhalt:

VON Kater
HINZUFÜGEN https://github.com/JpressProjects/jpress/raw/alpha/wars/jpress-web-newest.war
/usr/lokal/tomcat/webapps/
RUN cd /usr/local/tomcat/webapps/ \
&& mv jpress-web-newest.war jpress.war

erklären:

  • Der Container wird auf Basis von Tomcat erstellt.
  • Laden Sie das War-Paket des JPress-Projekts in das Webapps-Verzeichnis von Tomcat herunter.
  • Benennen Sie das JPress-Projekt um.

Schreiben Sie docker-compose.yml

Schreiben Sie docker-compose.yml in dasselbe Verzeichnis mit dem folgenden Inhalt (die Grundkenntnisse von yml werden hier nicht vorgestellt, die Leser können sich selbst informieren):

Version: "3.1"
Leistungen:
Webseite:
bauen: .
Containername: jpress
Häfen:
- „8080:8080“
Bände:
– /usr/local/tomcat/
hängt ab von:
-db
db:
Bild: MySQL
Containername: MySQL
Befehl: --default-authentication-plugin=mysql_native_password
Neustart: immer
Häfen:
- „3306:3306“
Umfeld:
MYSQL_ROOT_PASSWORD: 123
MYSQL_DATABASE: jpress

erklären:

  • Zuerst wird der Webcontainer und dann der DB-Container deklariert.
  • build. bedeutet, dass der Build-Kontext des Webcontainer-Projekts lautet. Das heißt, zum Erstellen des Webcontainers wird im aktuellen Verzeichnis nach der Docker-Datei gesucht.
  • container_name gibt den Namen des Containers an.
  • „Ports“ bezieht sich auf die Portzuordnung des Containers.
  • Volumes stellen die Datenvolumes dar, die den Container konfigurieren.
  • Depends_on bedeutet, dass der Container vom DB-Container abhängig ist. Beim Start wird zuerst der DB-Container gestartet und später der Web-Container. Dies ist lediglich der Zeitpunkt des Starts.
  • Die Reihenfolge der beiden Container bedeutet nicht, dass der Webcontainer erst gestartet wird, nachdem der DB-Container vollständig gestartet wurde.
  • Zum Erstellen des DB-Containers wird statt einer Docker-Datei ein Image verwendet.
  • restart beschreibt die Neustartstrategie für den Container.
  • environment ist die Umgebungsvariable beim Starten des Containers. Hier wird das Passwort des Datenbank-Root-Benutzers konfiguriert und eine Datei mit dem Namen
  • In der JPress-Bibliothek kann die Umgebungskonfiguration in Form eines Wörterbuchs und eines Arrays erfolgen.

OK, nach den obigen Schritten ist docker-compose.yml erfolgreich konfiguriert

laufen

Es gibt mehrere Möglichkeiten, es auszuführen, aber der ultimative Befehl ist „up“. Der Befehl „up“ ist sehr leistungsfähig. Er versucht, automatisch eine Reihe von Vorgängen abzuschließen, darunter das Erstellen von Images, das (Neu-)Erstellen von Diensten, das Starten von Diensten und das Zuordnen von dienstbezogenen Containern. Die meisten Anwendungen können direkt über diesen Befehl gestartet werden. Standardmäßig befinden sich alle Container, die mit docker-compose up gestartet werden, im Vordergrund, und die Konsole druckt die Ausgabeinformationen aller Container gleichzeitig aus, was beim Debuggen sehr praktisch ist. Wenn Sie den Befehl mit Strg-C stoppen, werden alle Container gestoppt. Wenn Sie den Befehl docker-compose up -d verwenden, werden alle Container gestartet und im Hintergrund ausgeführt. Diese Option wird im Allgemeinen für Produktionsumgebungen empfohlen. Wechseln Sie dazu in das Verzeichnis, in dem sich docker-compose.yml befindet und führen Sie den folgenden Befehl aus:

docker-compose up -d

Die Ausführungsergebnisse sind wie folgt:


Nach der Ausführung können Sie sehen, dass der Container über den Befehl „docker-compose ps“ gestartet wurde.

Erstkonfiguration

Geben Sie als Nächstes http://localhost:8080/jpress in den Browser ein. Anschließend wird die folgende JPress-Konfigurationsseite angezeigt:

Konfigurieren Sie die Datenbankverbindungsinformationen und grundlegenden Websiteinformationen gemäß der Anleitungsseite:



Hinweis: Da sowohl MySQL als auch Web in Containern ausgeführt werden, kann die Loopback-Adresse beim Konfigurieren der Datenbankadresse nicht geschrieben werden, da sich die Datenbank sonst in dem Container befindet, in dem sich das Web befindet.

Führen Sie nach Abschluss der Konfiguration den folgenden Befehl aus, um den Webcontainer neu zu starten:

Docker Neustart jpress

prüfen

Zeigen Sie die Blog-Startseite und die Backend-Verwaltungsseite im Browser an, wie unten dargestellt:


andere

Wenn Sie den Container stoppen möchten, können Sie den folgenden Befehl ausführen:

Docker-Compose nach unten

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Lösen Sie das Problem, dass Docker-Container sofort nach dem Start beendet werden
  • Zusammenfassung der Dateninteraktion zwischen Docker-Container und Host
  • Detaillierte Erläuterung des Konfigurationsprozesses des Docker-Container-Netzwerkports
  • Erstellen und Verwenden von Docker-Datenvolumencontainern
  • Detaillierte Erklärung der Datenmengen von Docker-Containern
  • So kommunizieren Sie zwischen dem WIN10-System und der internen Container-IP von Docker

<<:  JavaScript zum Erzielen eines einfachen Lupeneffekts

>>:  Was tun, wenn der Auto-Increment-Primärschlüssel in MySQL aufgebraucht ist?

Artikel empfehlen

CSS3 erstellt eine Webanimation, um einen springenden Balleffekt zu erzielen

Grundlegende Vorbereitung Für diese Implementieru...

Reines CSS-Dropdown-Menü

Ergebnisse erzielen Implementierungscode html <...

Vergleichen von Dokumentspeicherorten

<br />Ein toller Blogbeitrag von PPK vor zwe...

HTML ist die zentrale Grundlage für die Entwicklung von WEB-Standards

HTML-zentrierte Front-End-Entwicklung entspricht p...

JavaScript-Puzzlespiel

In diesem Artikelbeispiel wird der spezifische Ja...

HTML als Startseite festlegen und zu Favoriten hinzufügen_Powernode Java Academy

So implementieren Sie die Funktionen „Als Startse...

Detaillierte Erklärung der Methoden und Eigenschaften von Vue

Vue-Methoden und -Eigenschaften 1. Methoden Verwe...

Ubuntu 18.04 erhält Root-Berechtigungen und meldet sich als Root-Benutzer an

Vorab geschrieben: In den folgenden Schritten müs...

Lösung für EF (Entity Framework)-Einfüge- oder Aktualisierungsfehler

Fehlermeldung: Die Store-Update-, Insert- oder De...

So verwenden Sie Zeit als Beurteilungsbedingung in MySQL

Hintergrund: Während des Entwicklungsprozesses mü...