Zusammenfassung der Spring Boot Docker-Verpackungstools

Zusammenfassung der Spring Boot Docker-Verpackungstools

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 Docker

In 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-Plugin

Dies 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 Plugin

Das 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 Plugin

Dies 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:
  • Eine kurze Analyse der SpringBoot-Verpackung und des Hochladens in Docker sowie der Implementierung der Bereitstellung mehrerer Instanzen (IDEA-Version)
  • Detaillierte Schritte für Springboot Docker Jenkins zum automatischen Bereitstellen und Hochladen von Bildern
  • Implementierung der Springboot-Verpackung als Docker-Image und Deployment
  • Die einfachste Implementierung eines Docker-Images zum Verpacken von Spring Boot
  • Analyse des Docker-Image-Prozesses für die Verpackung von Springboot-Mikroservices
  • Detaillierte Schritte zum Verpacken und Hochladen von Spring Boot in ein Docker-Repository

<<:  Verwenden Sie CSS, um zu verhindern, dass Lightbox die Anzeige des großen Bildcodes ohne Aktualisierung realisiert, wenn Sie auf ein kleines Bild klicken

>>:  Ursachen und Lösungen für MySQL-Datenverlust

Artikel empfehlen

Klasse in Front-End-JavaScript

Inhaltsverzeichnis 1. Klasse 1.1 Konstruktor() 1....

Schritte zur VMware-Konfiguration des VMnet8-Netzwerks

Inhaltsverzeichnis 1. Einleitung 2. Konfiguration...

So packen Sie das Projekt per Idee in Docker

Viele Freunde wollten schon immer wissen, wie man...

Referenzen und Referenzdetails in Vue3

Der Editor teilt Ihnen auch die entsprechenden Pr...

Mysql Master-Slave-Synchronisation Last_IO_Errno:1236 Fehlerlösung

Was ist der Grund für den Fehler Last_IO_Errno:12...

Einige Erfahrungen in der Selbstkultivierung von Künstlern

Da der Einfluss des Unternehmens wächst und seine...

Grundlegende Fähigkeiten zum Entwerfen von Web-Frontend-Schnittstellen

[Erforderlich] Benutzeroberfläche PhotoShop/Feuer...

So vereinheitlichen Sie den Zeichensatz einer vorhandenen MySQL-Datenbank

Vorwort In der Datenbank sind einige Datentabelle...