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

Zusammenfassung einiger gängiger Konfigurationen und Techniken von Nginx

Vorwort Dieser Artikel listet mehrere gängige, pr...

Erfahren Sie in zehn Minuten, wie Sie Microservices mit Docker bereitstellen

Seit seiner Veröffentlichung im Jahr 2013 wird Do...

Häufige Fragen und Antworten im Vorstellungsgespräch für Stellen als Webdesigner

1. Was sind die Vorlagen für ASP.NET-Webanwendunge...

Docker-Dateispeicherpfad, Port-Mapping-Betriebsmodus ändern

So erhalten Sie den Container-Startbefehl Der Con...

So fügen Sie Bilder in HTML-Seiten ein und fügen Kartenindexbeispiele hinzu

1. Im Web unterstützte Bildformate: GIF: kann 256...

Details zur Reihenfolge, in der MySQL my.cnf liest

Inhaltsverzeichnis Die Reihenfolge, in der MySQL ...

Spezifische Verwendung des Ausnahmefilters Exceptionfilter in nestjs

Wenn wir über den Ausnahmefilter von Nestjs sprec...

JavaScript-Selektorfunktionen querySelector und querySelectorAll

Inhaltsverzeichnis 1. querySelector fragt ein ein...

MySQL InnoDB-Quellcodeanalyse für Transaktionssperren

Inhaltsverzeichnis 1. Schloss und Riegel 2. Wiede...

Details zur Bündelung statischer Ressourcen ohne JavaScript

Inhaltsverzeichnis 1. Benutzerdefinierter Import ...

Sind Sie immer noch Select *?

Es gibt viele Gründe, warum eine Anwendung langsa...

Mysql5.7.14 Linux-Version Passwort vergessen perfekte Lösung

Fügen Sie in der Datei /etc/my.conf unter [mysqld...