Das Spring Boot-Projekt verwendet Docker-Container, JAR und War-Layer-Verpackungen. Spring Boot unterstützt jetzt die Layered-Packaging-Technologie. Lassen Sie uns diese nutzen, um die Docker-Verpackung zu beschleunigen und sehr schnell zu erstellen. Layer-EinstellungenZunächst sollten in pom ähnliche Einstellungen vorgenommen werden: <Plugin> <groupId>org.springframework.boot</groupId> <artifactId>Spring-Boot-Maven-Plugin</artifactId> <version>${spring-boot.version}</version> <Konfiguration> <!-- Unterstützung für geschichtete Verpackung aktivieren --> <Ebenen> <aktiviert>wahr</aktiviert> </Ebenen> </Konfiguration> <Hinrichtungen> <Ausführung> <Ziele> <goal>neu verpacken</goal> </Ziele> </Ausführung> </Ausführungen> </plugin> Deklarieren Sie das Plugin Nach dem Verpacken überprüfen wir das JAR-Paket oder War-Paket und finden eine zusätzliche Datei layers.idx, die eine Liste der geschichteten Dateien enthält. - "Abhängigkeiten": - "WEB-INF/lib-bereitgestellt/" – „WEB-INF/lib/HikariCP-4.0.3.jar“ – „WEB-INF/lib/aspectjweaver-1.9.5.jar“ ... ... - "Spring-Bootloader": - "org/" - „Snapshot-Abhängigkeiten“: – „WEB-INF/lib/ms-fundmain-base-1.0-SNAPSHOT.jar“ – „WEB-INF/lib/xpower-main-1.0.3-SNAPSHOT.jar“ – „WEB-INF/lib/xpower-utils-1.0.3-SNAPSHOT.jar“ - "Anwendung": - "META-INF/" - "WEB-INF/Klassen/" – „WEB-INF/jetty-web.xml“ - "WEB-INF/layers.idx" - "Seiten/" - "statisch/" Diese Datei ist die Grundlage für die folgenden Ebeneneinstellungen. Wenn es sich um ein JAR handelt, gibt es auch eine Datei Beim Verpacken können wir Docker Build oder Hinweis: Spring-Boot-Maven-Plugin Es verfügt über eine Docker-Verpackungsfunktion, aber die Download- und Verpackungsgeschwindigkeit ist zu langsam, was sehr ärgerlich ist, deshalb empfehle ich es hier nicht. --- Der Vorteil ist, dass Sie keine Docker-Datei schreiben müssen, was einfach und praktisch ist. Der Nachteil ist, dass Sie die Docker-Datei nicht anpassen können. <Plugin> <groupId>org.springframework.boot</groupId> <artifactId>Spring-Boot-Maven-Plugin</artifactId> <Konfiguration> <Bild> <!--Bildnamen konfigurieren--> <name>127.0.0.1:5000/springcnscud/${Projekt.name}:${Projekt.version}</name> <!--Nachdem das Image gepackt wurde, wird es automatisch in das Image Warehouse übertragen--> <veröffentlichen>wahr</veröffentlichen> </image> <Docker> <!--Docker-Remoteverwaltungsadresse--> <host>http://127.0.0.1:2375</host> <!-- Zugriff ohne TLS --> <tlsVerify>falsch</tlsVerify> <!-- Konfiguration des Docker-Push-Image-Repository--> <Registrierung veröffentlichen> <!--Benutzername des Push-Mirror-Repositorys--> <Benutzername>cnscud</Benutzername> <!--Passwort für Image-Repository übertragen--> <Passwort>123456</Passwort> <!--Adresse des Push-Spiegel-Repositorys--> <url>http://127.0.0.1:5000</url> </publishRegistry> </docker> </Konfiguration> </plugin> Wenn Sie Docker-Maven-Plugin + benutzerdefiniertes Dockerfile verwenden:POM-Konfiguration: <Plugin> <groupId>io.fabric8</groupId> <artifactId>Docker-Maven-Plugin</artifactId> <version>${docker.plugin.version}</version> <Konfiguration> <!-- Docker Remote API --> <!-- Diese Maschine kann auskommentiert werden, wenn sie nicht auf Port 2375 lauscht --> <dockerHost>${docker.host}</dockerHost> <!-- Privater Docker-Image-Server--> <registry>${docker.registry}</registry> <Bilder> <Bild> <name>${docker.registry}/${docker.namespace}/${project.name}:${project.version}</name> <Bauen> <dockerFileDir>${project.basedir}</dockerFileDir> </bauen> </image> </Bilder> </Konfiguration> </plugin> Werfen wir einen Blick auf das Dockerfile-Format im JAR-Modus von Spring Boot:# Schichtaufbau, beschleunigter inkrementeller Aufbau VON adoptopenjdk/openjdk8:centos-slim als Builder WORKDIR-Anwendung ARG JAR_FILE=Ziel/*.jar KOPIEREN SIE ${JAR_FILE} app.jar RUN java -Djarmode=layertools -jar app.jar extract && rm app.jar VON adoptopenjdk/openjdk8:centos-slim LABEL-Betreuer="[email protected]" ENV TZ=Asien/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ENV JAVA_OPTS="-Xms128m -Xmx256m" WORKDIR-Anwendung KOPIEREN --from=builder /application/dependencies/ ./ KOPIEREN --from=builder /application/snapshot-dependencies/ ./ KOPIEREN --from=builder /anwendung/spring-boot-loader/ ./ KOPIEREN --from=builder /Anwendung/Anwendung/ ./ EXPOSE 9001 EINSTIEGSPUNKT ["sh", "-c", "java $JAVA_OPTS org.springframework.boot.loader.JarLauncher"] Bitte ändern Sie das JDK entsprechend Ihrer eigenen Situation und verwenden Sie JarLauncher für Jar. Wenn Krieg ist, wie soll er ausgelöst werden?Wenn Sie es zunächst unabhängig ausführen möchten, können Sie eingebetteten Tomcat oder Jetty verwenden und den Provider nicht in POM festlegen. <Abhängigkeit> <groupId>org.springframework.boot</groupId> <artifactId>Spring-Boot-Starter-Tomcat</artifactId> </Abhängigkeit> Auf diese Weise wird der eingebettete Tomcat beim Verpacken einbezogen. Das Dockerfile ist wie folgt aufgebaut: # Schichtaufbau, beschleunigter inkrementeller Aufbau VON adoptopenjdk/openjdk8:centos-slim als Builder WORKDIR-Anwendung ARG JAR_FILE=Ziel/*.war KOPIEREN SIE ${JAR_FILE} app.war RUN java -Djarmode=layertools -jar app.war extract && rm app.war VON adoptopenjdk/openjdk8:centos-slim LABEL-Betreuer="[email protected]" ENV TZ=Asien/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ENV JAVA_OPTS="-Xms128m -Xmx256m" WORKDIR-Anwendung KOPIEREN --from=builder /application/dependencies/ ./ KOPIEREN --from=builder /application/snapshot-dependencies/ ./ KOPIEREN --from=builder /anwendung/spring-boot-loader/ ./ KOPIEREN --from=builder /Anwendung/Anwendung/ ./ EXPOSE 8000 EINSTIEGSPUNKT ["sh", "-c", "java $JAVA_OPTS org.springframework.boot.loader.WarLauncher"] Notieren Sie sich den Dateinamen und führen Sie ihn mit WarLauncher aus. Externen Tomcat verwendenOhne Experimente kann das Erstellen von Ebenen problematisch sein ... Theoretisch ist es jedoch auch möglich, das entpackte War-Paket zu verwenden, anstatt es von Tomcat selbst entpacken zu lassen Ich werde es hier nicht versuchen. Der Hauptpunkt besteht darin, das Basispaket in Tomcat zu ändern, den laufenden ENTRYPOINT in Tomcat zu ändern und die Datei in den Container in der Mitte zu kopieren. VON Tomcat:9.0 #Kopieren Sie die Datei xx.war unter Ziel nach /usr/local/tomcat/webapps/ ADD ./target/xx.war /usr/local/tomcat/webapps/ #EXPOSE-Anschluss 8080 #Setzen Sie den Startbefehl ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"] Dies ist das Ende dieses Artikels über Spring Boot mit Docker-Schichtverpackung. Weitere verwandte Inhalte zu Docker-Schichtverpackung 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:
|
<<: Lösen Sie das Problem der Selbstinkrementierung des int-Primärschlüssels von MySQL
>>: Implementierung langer Textschatten in Less in CSS3
Inhaltsverzeichnis 1. Grundlegende Grammatik 2. F...
Vorwort Vor Kurzem wurde ein Teil der Geschäftstä...
Inhaltsverzeichnis 1. Bereiche werden in verschie...
Sublime Text 2 ist ein leichter, einfacher, effiz...
Inhaltsverzeichnis Problem 1: Zerstörung 1. Wie m...
Überblick Da wir die Daten normalerweise nicht di...
Inhaltsverzeichnis Vorwort Die Beziehung zwischen...
In diesem Artikel wird der spezifische Code zur V...
Anwendungsszenario: Es ist notwendig, die Anzahl ...
Der W3C-Standardisierungsprozess ist in 7 verschi...
Dieser Artikel veranschaulicht anhand von Beispie...
Da der Datenbindungsmechanismus von Vue und ander...
1. MySQL-Benutzerverwaltung [Beispiel 1.1] Melden...
Im Allgemeinen sollte die Hintergrundfarbe einer W...
1. Umgebungsbeschreibung (1) CentOS-7-x86_64, Ker...