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

Der vollständige Code der im Uniapp-Applet enthaltenen Radardiagrammkomponente

Effektbild: Der Implementierungscode lautet wie f...

Detaillierte Erläuterung des Speichermodells der JVM-Serie

Inhaltsverzeichnis 1. Speichermodell und Laufzeit...

Analyse verschiedener Fehler bei Sortierregeln für MySQL-Tabellen

Der folgende Fehler wird gemeldet, wenn MySQL meh...

mysql5.7.18 dekomprimierte Version zum Starten des MySQL-Dienstes

Die dekomprimierte Version von mysql5.7.18 starte...

Docker-Praxis: Python-Anwendungscontainerisierung

1. Einleitung Container nutzen einen Sandbox-Mech...

Detaillierter Prozess der Installation von Jenkins-2.249.3-1.1 mit Docker

Inhaltsverzeichnis 1. Docker installieren 2. Zieh...

Detaillierte Erklärung der Primärschlüssel und Transaktionen in MySQL

Inhaltsverzeichnis 1. Kommentare zu MySQL-Primärs...

Implementierungsmethode für die Datenspeicherung im WeChat-Applet

Inhaltsverzeichnis Globale Variable „globalData“ ...

js, um einen gleitenden Karusselleffekt zu erzielen

In diesem Artikel wird der spezifische Code von j...

Eine detaillierte Einführung in die Verwendung von Blockkommentaren in HTML

Allgemeine Kommentare in HTML: <!--XXXXXXXX--&g...

So verstecken Sie RAR-Dateien in Bildern

Sie können dieses Logo lokal als .rar-Datei speic...