In letzter Zeit werden die Anwendungen des Unternehmens auf die Containerisierung vorbereitet, da das Testen und Freigeben von Dutzenden von Anwendungen zu mühsam ist und während der Bereitstellung aufgrund von Umgebungsfaktoren verschiedene Probleme auftreten werden. Um eine konsistente Umgebung in Entwicklung, Test und Produktion aufrechtzuerhalten, wurde die Containertechnologie eingeführt. Wir haben sie zunächst mit Edge-Projekten ausprobiert und Erfahrungen gesammelt. Heute haben wir einige gängige Spring Boot Docker-Verpackungstools kurz zusammengefasst. Spring Boot DockerIn Spring Boot-Anwendungen können wir uns auf unterschiedliche Bezeichner einigen, um unterschiedliche Umgebungen zu definieren. Beispielsweise stellt dev die Entwicklungsumgebung und test die Testumgebung dar. Die entsprechenden Konfigurationsdateien sind apppcation-dev.yaml und apppcation-test.yaml. Wir aktivieren die entsprechende Umgebungskonfiguration, indem wir spring.profiles.active deklarieren, zum Beispiel spring.profiles.active=dev beim Aktivieren der Dev-Umgebung. Der vollständige Startbefehl lautet: java -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=dev -jar spring-boot-app.jar Schreiben Sie gemäß dem obigen Befehl eine Docker-Datei, die sich an mehrere Umgebungen anpassen kann: # Importieren Sie das OpenJDK-Image von adoptopenjdk/openjdk8 #Autor angeben LABEL AUTHOR=felord OG=felord.cn # Mehrere nützliche Ordner einbinden, wie z. B. logs VOLUME ["/tmp","/logs"] #Deklarieren Sie einen Umgebungsparameter, um die Standard-Entwicklerkonfigurationsdatei dynamisch zu aktivieren ENV ACTIVE=Entwickler # Port freigeben EXPOSE 8080 # Kopieren und ändern Sie den Namen der JAR-Datei nach dem Verpacken der Anwendung ADD /target/flyway-spring-boot-1.0.0.jar app.jar # Der erste Befehl, der beim Starten des Containers ausgeführt wird, wird zum Starten der Anwendung ENTRYPOINT verwendet ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=${ACTIVE}","-jar","app.jar"] Das gepackte Docker-Image kann dann die Umgebung dynamisch ändern, indem ein zusätzliches --env ACTIVE=test zu docker run hinzugefügt wird. Das einfache Schreiben von Dockerfile ist für unsere DevOps nicht praktisch. Lebenszyklus eines Docker-Images Wir müssen in der Lage sein, automatisch zu erstellen, ins Repository zu pushen, Bilder abzurufen und eine Reihe von Pipeline-Operationen auszuführen. Glücklicherweise gibt es auf dem Markt viele Tools, die uns bei diesem Prozess unterstützen. Spring-Boot-Maven-PluginDies ist ein offizielles Spring Boot-Plug-In, das Funktionen zum Erstellen von Docker-Images in einer bestimmten Version von 2.x bereitstellt. <Projekt> <Bauen> <Plugins> <Plugin> <groupId>org.springframework.boot</groupId> <artifactId>Spring-Boot-Maven-Plugin</artifactId> <Konfiguration> <Bild> <name>docker.repo.com/library/${project.artifactId}:${project.version}</name> <veröffentlichen>wahr</veröffentlichen> </image> <Docker> <Registrierung veröffentlichen> <Benutzername>Benutzer</Benutzername> <password>geheim</password> <url>https://docker.repo.com/v1/</url> <email>[email protected]</email> </publishRegistry> </docker> </Konfiguration> </plugin> </plugins> </bauen> </Projekt> Nachdem Sie das private Docker-Warehouse konfiguriert haben, können Sie das Image über mvn clean spring-boot:build-image erstellen. Der Vorteil dieser Methode besteht darin, dass keine zusätzlichen Abhängigkeiten bestehen. Der Nachteil besteht darin, dass Sie die Build-Komponenten von GitHub herunterladen müssen und dies leicht fehlschlagen kann, wenn das Netzwerk nicht gut ist. Spotify Maven PluginDas Spotify Maven-Plugin ist derzeit eine beliebte Wahl. Anwendungsentwickler müssen eine Docker-Datei schreiben und sie im Verzeichnis src/main/docker des Projekts platzieren. Anschließend können Sie es wie folgt importieren: <Plugin> <groupId>com.spotify</groupId> <artifactId>Dockerfile-Maven-Plugin</artifactId> <version>1.4.8</version> <Konfiguration> <repository>repo.com/${project.artifactId}</repository> </Konfiguration> </plugin> Dieses Plug-In bietet drei Befehle: mvn dockerfile:build, mvn dockerfile:tag und mvn dockerfile:push, die zum Erstellen, Markieren und Veröffentlichen in einem Remote-Privatrepository verwendet werden. Es ist sehr einfach. Dies ist ein Plug-In, das sehr einfach zu verwenden ist. Die einzige Voraussetzung ist, dass Sie Dockerfile schreiben können. Sie können es verwenden, wenn Sie hohe Anforderungen an die Anpassung haben. Jib Maven PluginDies habe ich bereits in einem früheren Artikel vorgestellt, dort könnt ihr mehr dazu erfahren. Es handelt sich um das Open-Source-OCI-Image-Packaging-Tool von Google, mit dem Docker-Images verpackt werden können und das in den meisten Fällen den Anforderungen entspricht. Wenn Sie es jedoch anpassen möchten, ist dies dennoch nicht einfach und Sie müssen die offiziellen Dokumente lesen. Bei Verwendung von JIb muss das anfängliche Dockerfile wie folgt konfiguriert werden: <Plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>3.0.0</version> <Konfiguration> <von> <image>adoptopenjdk/openjdk8</image> </von> <bis> <image>docker.repo.com/library/${project.artifactId}</image> <Berechtigung> <Benutzername>Felord</Benutzername> <Passwort>xxxxxx</Passwort> </auth> <Tags> <tag>${project.version}</tag> </tags> </to> <zusätzlicheVerzeichnisse> <Pfade> <Pfad> <von>Ziel/${project.artifactId}-${project.version}.jar</von> <includes>*.jar</includes> <in>/app.jar</in> </Pfad> </Pfade> </extraDirectories> <containerizingMode>verpackt</containerizingMode> <Behälter> <volumes>/tmp,/logs</volumes> <Anschlüsse> <Port>8080</Port> </Anschlüsse> <Umgebung> <active>Entwickler</active> </Umgebung> <Einstiegspunkt> java,-Djava.security.egd=Datei:/dev/./urandom,-Dspring.profiles.active=${active},-jar,/app.jar </Einstiegspunkt> <creationTime>AKTUELLEN_ZEITSTEMPEL_VERWENDEN</creationTime> </container> </Konfiguration> </plugin> Der Vorteil besteht darin, dass keine lokale Docker-Umgebung erforderlich ist und der Schichtenaufbau sowie die Bildverkleinerung unterstützt werden, was den Einstieg erleichtert. Der Nachteil besteht darin, dass die Anpassung schwieriger ist. Dies ist das Ende dieses Artikels darüber, welches Docker-Verpackungs-Plugin für Spring Boot besser ist. Weitere relevante Inhalte zum Docker-Verpackungs-Plugin für Spring Boot 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:
|
>>: Ursachen und Lösungen für MySQL-Datenverlust
Inhaltsverzeichnis 1. Klasse 1.1 Konstruktor() 1....
Inhaltsverzeichnis 1. Einleitung 2. Konfiguration...
<br />Seit das Außenministerium und andere z...
Ich habe gerade Ubuntu installiert und als ich es...
Inhaltsverzeichnis Dropdown-Feld zur Mehrfachausw...
brauchen: Den Geschäftsanforderungen entsprechend...
Viele Freunde wollten schon immer wissen, wie man...
Der Editor teilt Ihnen auch die entsprechenden Pr...
Was ist der Grund für den Fehler Last_IO_Errno:12...
Der Docker-Daemon verwendet HTTP_PROXY , HTTPS_PR...
Verwenden Sie den Befehl wget, um das gesamte Unt...
Da der Einfluss des Unternehmens wächst und seine...
Dynamische Bibliothek kann unter Linux nicht gela...
[Erforderlich] Benutzeroberfläche PhotoShop/Feuer...
Vorwort In der Datenbank sind einige Datentabelle...