Implementierung des Deployment-War-Package-Projekts mit Docker

Implementierung des Deployment-War-Package-Projekts mit Docker

Um War mit Docker bereitzustellen, müssen Sie einen Container verwenden. Wir verwenden den Tomcact-Container. Tatsächlich legen wir das War-Paket einfach in das Webapps-Verzeichnis von Tomcat ab. Wenn Tomcat gestartet wird, wird das War-Paket automatisch dekomprimiert.

Eine Möglichkeit besteht darin, das Tomcat-Container-Image in Docker zu installieren und dann das War-Paket in Webapps unter dem Tomcat-Image abzulegen. Wenn Tomcat jedoch geschlossen wird, verschwindet das Paket unter seinen Webanwendungen. Die zweite Möglichkeit besteht darin, die Bereitstellung zu verwenden und trotzdem das Image des Tomcat-Containers zu installieren, das War-Paket jedoch nicht in den Webanwendungen unter Tomcat abzulegen. Erstellen Sie direkt einen externen Ordner und verknüpfen Sie diesen externen Ordner mit Wabapps, sodass die Webanwendungen von Tomcat, wenn War in den neu erstellten Ordner abgelegt wird, auch das bereitgestellte War-Paket lesen können.

1. Installieren und starten Sie das Tomcat-Image

1. Suchen Sie unter Docker nach dem Tomcat-Image, vorausgesetzt, Docker befindet sich im gestarteten Zustand. Ich werde hier nicht erklären, wie Docker gestartet wird und wie es so eingestellt wird, dass es automatisch gestartet wird.

Docker-Suche Tomcat 

2. Laden Sie Docker nach Namen herunter und ziehen Sie docker.io/tomcat

3. Starten Sie Tomcat

 docker run -d -p 8088:8080 docker.io/tomcat

-d bedeutet Ausführung im Hintergrund, -p bedeutet Portzuordnung, der vordere 8088 ist der externe Zugriffsport (d. h. der Port, der durch die lokale IP für die Außenwelt geöffnet wird) und der hintere 8080 ist der Port innerhalb des Docker-Containers.

4. Durchsuchen Sie, um zu sehen, ob Tomcat gestartet ist

3. Wandeln Sie das Springboot-Projekt in ein War-Package-Projekt um

Ich bin es gewohnt, Springboot zu verwenden, und es ist mühsam, ein War-Paketprojekt zu erstellen. Also habe ich ein neues Springboot-Projekt erstellt und es dann in ein War-Projekt geändert. Wenn Sie bereits ein War-Paketprojekt haben, können Sie diesen Schritt überspringen.

1. Erstellen Sie ein Springboot-Projekt. Darüber werde ich nicht sprechen. Wenn Sie es brauchen, können Sie meinen anderen Blog lesen: Erstellen und verwenden Sie SpringBoot ganz einfach

2. Ändern Sie die Datei pom.xml

2.1 Ändern Sie das Glas in Krieg

2.2 Entfernen Sie den eigenen Tomcat des integrierten Webmoduls

2.3 Fügen Sie eine Servlet-Abhängigkeit hinzu, da sonst beim Verpacken ein Fehler auftritt

<Abhängigkeit>
  <groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>3.1.0</version>
</Abhängigkeit>

2.4 Fügen Sie dem Projekt einen Alias ​​hinzu. Fügen Sie finalName unter dem Build-Tag hinzu, also den Projektnamen. Wenn Sie es nicht hinzufügen, ist der Projektname Ihre Artefakt-ID-Version und der Name des generierten War-Pakets ist ebenfalls Artefakt-ID-Version.war. Der Projektname wäre zu lang, wenn er über einen Browser aufgerufen würde. Dieser Schritt hängt von den persönlichen Vorlieben ab

3. Ändern Sie die Startklasse. Die Startklasse erbt SpringBootServletInitializer

4. Legen Sie das Kriegspaket unter die Webapps des Tomcat-Containers und starten Sie das Kriegspaket

1. Erstellen Sie einen Ordner, in dem das hochgeladene War-Paket gespeichert wird. Ich habe es im Stammverzeichnis abgelegt/

mkdir warPackage und übertragen Sie die Datei dann in dieses Verzeichnis

2. Kopieren Sie das War-Paket in das Webapps-Verzeichnis des Tomcat-Containers

2.1. Sie müssen die Container-ID des laufenden Tomcat-Containers kennen und Docker PS ausführen

2.2. Kopieren Sie das War-Paket in das Webapps-Verzeichnis des Tomcat-Containers. Das Befehlsformat lautet: docker cp xxx.war Paketpfad Container-ID:/zu kopierender Verzeichnispfad

docker cp /warPackage/dockerProject.war e591e16899c6:/usr/local/tomcat/webapps

2.3. Überprüfen Sie, ob es kopiert wurde

Geben Sie den Tomcat-Container in Docker ein: docker exec -it e591e16899c6 /bin/bash

Verlassen Sie den Container: exit

3. Starten Sie den Container neu: Docker-Neustart + Container-ID

4. Der Browser-Zugriffspfad lautet: der Port, auf den Sie gerade zugegriffen haben: Projektname/Schnittstellenname. Mein Projektname ist dockerProject. Docker ist ein einfacher Controller, den ich geschrieben habe.

5. Starten Sie das War-Paket über das Mount-Verzeichnis

Beim Mounten wird ein separates Verzeichnis auf dem Server erstellt und dann dem Pfad der Webanwendungen unter Tomcat zugeordnet, damit Tomcat Dateien im externen Ordner lesen kann.

1. Um Ärger zu vermeiden, verwende ich direkt den oben erstellten Ordner /warPackage

2. Mounten Sie das Verzeichnis, führen Sie den Tomcat-Container aus und stellen Sie ihn auf automatischen Neustart ein: --restart=always

docker run -d -p 8088:8080 -v /warPackage/:/usr/local/tomcat/webapps --restart=immer docker.io/tomcat

Wenn Sie dann das Tomcat-Verzeichnis aufrufen, können Sie sehen, dass es sich bereits unter Webapps befindet

3. Browserzugriff

Dies ist das Ende dieses Artikels über die Verwendung von Docker zum Bereitstellen von War-Paketprojekten. Weitere relevante Inhalte zur Bereitstellung von War-Paketen über Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • So stellen Sie eigenständigen Pulsar und geclustertes Redis mit Docker bereit (Entwicklungsartefakt)
  • So verbinden Sie die Idee mit Docker, um eine Bereitstellung mit einem Klick zu erreichen
  • Beispiel für die Bereitstellung von MySQL 8.0 mit Docker
  • Best Practices für die Bereitstellung des ELK7.3.0-Protokollsammlungsdienstes mit Docker
  • Detaillierter Prozess der Installation und Bereitstellung von OnlyOffice in Docker

<<:  Lösen Sie das Problem der Kombination von AND und OR in MySQL

>>:  Eine elegantere Methode zur Fehlerbehandlung in JavaScript async await

Artikel empfehlen

Anweisungen zur verschachtelten Verwendung von MySQL ifnull

Verschachtelte Verwendung von MySQL ifnull Ich ha...

Lösen Sie das Problem der Angabe der UDP-Portnummer im Docker

Wenn Docker einen Container startet, gibt es den ...

Eine kurze Analyse der Verwendung des HTML-Webpack-Plugins

Wenn Sie zum Starten der Seite das Plugin „html-w...

MySQL-Lerndatenbankbetrieb DML ausführliche Erklärung für Anfänger

Inhaltsverzeichnis 1. Anweisung einfügen 1.1 Einf...

Implementierung der Nginx-Domänennamenweiterleitung für den HTTPS-Zugriff

Ein Wort vorab: Plötzlich erhielt ich die Aufgabe...

Vue definiert private Filter und grundlegende Nutzung

Die Methoden und Konzepte privater und globaler F...

Der URL-Wert des SRC- oder CSS-Hintergrundbildes ist der Base64-codierte Code

Möglicherweise ist Ihnen aufgefallen, dass auf die...

Erläuterung des React+TypeScript-Projektaufbaufalls

Das Erstellen eines React-Projekts kann sehr einf...

So implementieren Sie die Vervollständigung leerer Zellen in HTML-Tabellen

Als ich mir selbst die Webentwicklung beibrachte,...

Beispiel zum Erstellen eines öffentlichen Harbor-Repository mit Docker

Im vorherigen Blogbeitrag ging es um das private ...

Bei der Verwendung von MySQL aufgetretene Probleme

Hier sind einige Probleme, die bei der Verwendung...

SQL-Implementierung von LeetCode (182. Doppelte Postfächer)

[LeetCode] 182.Doppelte E-Mails Schreiben Sie ein...