So stellen Sie ein SpringBoot-Projekt mit Dockerfile bereit

So stellen Sie ein SpringBoot-Projekt mit Dockerfile bereit

1. Erstellen Sie ein SpringBoot-Projekt und packen Sie es in ein JAR-Paket

2. Erstellen Sie einen Ordner in Linux, um Docker-Tests durchzuführen

[root@izwz90lvzs7171wgdhul8az ~]# mkdir /root/docker_test

3. Laden Sie das JAR-Paket auf Linux hoch

Erstellen Sie einen Ordner zum Speichern des JAR-Pakets

[root@izwz90lvzs7171wgdhul8az docker_test]# mkdir /root/docker_test/jar

Verwenden Sie dann XShell, um das JAR-Paket in den obigen Ordner hochzuladen

4. Schreiben Sie das Dockerfile

# Erstellen Sie ein neues Bild basierend auf dem Java-Bild FROM java:8
# Autor: MAINTAINER Howinfun
# Fügen Sie das JAR-Paket zum Container hinzu und benennen Sie es in app.jar um
HINZUFÜGEN jar/app.jar /root/docker_test/app.jar
# Führen Sie das JAR-Paket ENTRYPOINT aus ["nohup","java","-jar","/root/docker_test/app.jar","&"]

Hinweis: Die Anweisungen ADD und COPY werden auf die gleiche Weise verwendet. Der einzige Unterschied besteht darin, dass ADD das Extrahieren und Dekomprimieren von Archivdateien (tar, gzip, bzip2 usw.) unterstützt. Es ist auch wichtig zu beachten, dass das Verzeichnis, das der COPY-Befehl kopieren muss, im selben Verzeichnis wie die Dockerfile-Datei liegen muss.

5. Machen Sie einen Spiegel

[root@izwz90lvzs7171wgdhul8az docker_test]# docker build -t sbdemo .

Befehlsparameter:

-t: Geben Sie den neuen Bildnamen an
.: zeigt an, dass sich das Dockfile im aktuellen Pfad befindet

Wenn sich unser Dockerfile-Dateipfad nicht in diesem Verzeichnis befindet oder einen anderen Dateinamen hat, können wir den Pfad der Dockerfile-Datei separat über die Option -f angeben.

[root@izwz90lvzs7171wgdhul8az docker_test]# docker build -t sbdemo -f /root/docker_test/Dockerfile /root/docker_test/

Befehlsparameter:

-f: Der erste Parameter ist der Pfad des Dockerfiles und der zweite Parameter ist der Ordner, in dem sich das Dockerfile befindet. Nachdem die Erstellung abgeschlossen ist, verwenden Sie den Befehl „Docker Images“, um das von uns erstellte Image anzuzeigen:

[root@izwz90lvzs7171wgdhul8az docker_test]# Docker-Bilder | grep sbdemo
sbdemo latest 7efac46ef997 vor 4 Stunden 686 MB

6. Starten Sie den Container

[root@izwz90lvzs7171wgdhul8az docker_test]# docker run -d -p 8888:8888 --name mysbdemo sbdemo:latest

Befehlsparameter:

-d: Im Hintergrund ausführen
-p: Die Portnummer öffentlich angeben
--name: Geben Sie dem Container einen Namen

Nach dem Start können Sie den laufenden Container über Docker PS anzeigen:

[root@izwz90lvzs7171wgdhul8az docker_test]# docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
5096c8c7b36f sbdemo "nohup java -jar /ro?? vor 4 Sekunden Up 2 Sekunden 0.0.0.0:8888->8888/tcp mysbdemo

7. Container-Startprotokoll anzeigen

Wir können die Protokolle des angegebenen Containers über Docker-Protokolle anzeigen:

[root@izwz90lvzs7171wgdhul8az docker_test]# Docker-Protokolle mysbdemo

 . ____ _ __ _ _
 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/ ___)| |_)| | | | | | | (_| | ) ) ) )
 ' |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|================|___/=/_/_/_/
 :: Spring Boot :: (v2.1.6.RELEASE)

2019-10-11 02:10:46.264 INFO 1 --- [main] com.hyf.DatabaseApplication: DatabaseApplication v0.0.1-SNAPSHOT wird auf 6d85ac5d8751 mit PID 1 gestartet (/root/docker_test/app.jar von root in / gestartet)
2019-10-11 02:10:46.267 DEBUG 1 --- [main] com.hyf.DatabaseApplication: Wird ausgeführt mit Spring Boot v2.1.6.RELEASE, Spring v5.1.8.RELEASE
2019-10-11 02:10:46.268 INFO 1 --- [ main] com.hyf.DatabaseApplication : Kein aktives Profil festgelegt, Rückgriff auf Standardprofile: Standard
11.10.2019 02:10:49.139 WARNUNG 1 --- [main] omsmapper.ClassPathMapperScanner: MapperFactoryBean mit dem Namen „bookMapper“ und MapperInterface „com.hyf.mapper.BookMapper“ wird übersprungen. Bean mit demselben Namen bereits definiert!
11.10.2019 02:10:49.139 WARNUNG 1 --- [main] omsmapper.ClassPathMapperScanner: Im Paket „[com.hyf]“ wurde kein MyBatis-Mapper gefunden. Bitte überprüfen Sie Ihre Konfiguration.
11.10.2019 02:10:49.246 INFO 1 --- [main] .sdrcRepositoryConfigurationDelegate: Mehrere Spring Data-Module gefunden, Wechsel in den strengen Repository-Konfigurationsmodus!
11.10.2019 02:10:49.257 INFO 1 --- [main] .sdrcRepositoryConfigurationDelegate: Bootstrapping von Spring Data-Repositorys im DEFAULT-Modus.
11.10.2019 02:10:49.328 INFO 1 --- [main] .sdrcRepositoryConfigurationDelegate: Scannen des Spring Data-Repository in 39 ms abgeschlossen. 0 Repository-Schnittstellen gefunden.
2019-10-11 02:10:50.345 INFO 1 --- [main] trationDelegate$BeanPostProcessorChecker: Bean „org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration“ vom Typ [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$2c6b335] kann nicht von allen BeanPostProcessors verarbeitet werden (z. B. nicht für automatisches Proxying geeignet).
2019-10-11 02:10:51.255 INFO 1 --- [ main] osbwembedded.tomcat.TomcatWebServer : Tomcat initialisiert mit Port(s): 8888 (http)
2019-10-11 02:10:51.359 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Dienst wird gestartet [Tomcat]
2019-10-11 02:10:51.359 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Servlet-Engine wird gestartet: [Apache Tomcat/9.0.21]
2019-10-11 02:10:51.778 INFO 1 --- [ main] oaccC[Tomcat].[localhost].[/] : Initialisierung des in Spring eingebetteten WebApplicationContext
2019-10-11 02:10:51.779 INFO 1 --- [main] osweb.context.ContextLoader: Root WebApplicationContext: Initialisierung in 5104 ms abgeschlossen
11.10.2019 02:10:54.164 INFO 1 --- [main] ossconcurrent.ThreadPoolTaskExecutor: ExecutorService „applicationTaskExecutor“ wird initialisiert.
2019-10-11 02:10:56.081 INFO 1 --- [ main] osbwembedded.tomcat.TomcatWebServer : Tomcat gestartet auf Port(s): 8888 (http) mit Kontextpfad ''
2019-10-11 02:10:56.090 INFO 1 --- [ main] com.hyf.DatabaseApplication : DatabaseApplication in 11,49 Sekunden gestartet (JVM läuft seit 12,624)

8. Zugangsschnittstelle

Nachdem der Container gestartet wurde, versuchen wir, mithilfe von Postman oder anderen HTTP-Tools auf die im Container bereitgestellte Anwendungsschnittstelle zuzugreifen.

Zusammenfassen

Oben ist die vom Herausgeber vorgestellte Methode zur Verwendung von Dockerfile zum Bereitstellen von SpringBoot-Projekten. Ich hoffe, sie ist für alle hilfreich. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der CMD- und ENTRYPOINT-Befehle im Dockerfile
  • So schreiben Sie das beste Dockerfile
  • Detaillierte Erklärung der COPY- und ADD-Befehle in Dockerfile
  • Eine detaillierte Einführung in die Dockerfile-Image-Erstellungsdatei und verwandte Befehle in Docker
  • Detaillierte Erläuterung der Verwendung von Dockerfile zum Erstellen eines MySQL-Images und zum Implementieren der Dateninitialisierung und Berechtigungseinstellung
  • Detaillierte Erläuterung der spezifischen Verwendung der ENV-Anweisung in Dockerfile
  • Beispiele für die Verwendung von Dockerfile
  • Dockerfile zum Erstellen des offiziellen Tomcat-Images und detaillierte Erklärung zur Image-Verwendung
  • Zusammenfassung gängiger Befehle in Dockerfile
  • So erstellen Sie mit Dockerfile ein Spiegelbild der Java-Laufzeitumgebung
  • So erstellen Sie Ihr eigenes Image mit Dockerfile
  • Einführung in die Dockerfile-Anweisungen ADD und COPY
  • Detaillierte Erklärung zu Multi-Stage (Multi-Stage Build) in Dockerfile
  • Docker-Grundlagen: Detaillierte Erklärung der Dockerfile-Befehle
  • So stellen Sie den Node.js-Dienst mithilfe von Dockerfile bereit
  • Dockerfile-Anweisungen erklärt
  • Eine kurze Einführung in die Dockerfile-Anweisung VOLUME
  • Dockerfile – einfache Einführung

<<:  Vollständiger Prozessdatensatz zur Fehlerbehebung bei MySQL DeadLock

>>:  Bringen Sie Ihnen bei, wie Sie ein React+Antd-Projekt von Grund auf erstellen

Artikel empfehlen

So verwenden Sie den MySQL-Autorisierungsbefehl „grant“

Die Beispiele in diesem Artikel laufen auf MySQL ...

Natives JS zum Implementieren der Seitenleiste zum Teilen

Dieser Artikel zeigt eine mit nativem JS implemen...

Einführung in die Verwendung von MySQL-Quellbefehlen

Inhaltsverzeichnis Gedanken, die durch eine Onlin...

Mit CSS3 lässt sich ein umdrehbarer Hover-Effekt erzielen

CSS3 implementiert einen umdrehbaren Hover-Effekt...

Reduzieren Sie die Speicher- und CPU-Auslastung durch die Optimierung von Webseiten

Manche Webseiten erscheinen möglicherweise nicht g...

Spezifische Verwendung zusammengesetzter CSS-Selektoren

Kreuzungsauswahl Der Schnittpunktselektor besteht...

So visualisieren Sie skizzierte Diagramme in Vue.js mit RoughViz

einführen Ein Diagramm ist eine grafische Darstel...

Vue implementiert die Seiten-Caching-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

So beheben Sie das Eingabe-Jitter-Problem beim WeChat-Applet

Finden Sie das Problem Schauen wir uns zunächst d...

Linux: Fünf-Schritte-Kernel-Build-Baum

Inhaltsverzeichnis 0. Der mit dem System geliefer...

CSS3-Mauszeiger-Übergangszoomeffekt

Das Folgende ist ein Bild-Zoom-Effekt, der in rei...