Neue Funktionen von Spring Boot 2.4: Detaillierte Erläuterung des Prozesses zum Erstellen eines Docker-Image mit nur einem Klick

Neue Funktionen von Spring Boot 2.4: Detaillierte Erläuterung des Prozesses zum Erstellen eines Docker-Image mit nur einem Klick

Hintergrund

Um die Docker-Containerisierung während unseres Entwicklungsprozesses zu unterstützen, verwenden wir im Allgemeinen Maven zum Kompilieren und Verpacken und anschließenden Generieren von Bildern, was die Online-Effizienz erheblich verbessern kann und außerdem eine schnelle und dynamische Kapazitätserweiterung und ein schnelles Rollback ermöglicht, was wirklich praktisch ist. Das Plugin „Docker-Maven-Plugin“ soll uns dabei helfen, automatisch Bilder zu generieren und sie durch einfache Konfiguration in Maven-Projekten in das Lager zu übertragen.

Spotify, Stoff8

Die beiden wichtigsten hier verwendeten Plug-Ins sind Spotify und Fabric8. ... - Konfigurieren Sie das Dockerfile über XML oder mounten Sie ein externes Dockerfile, um ein Image zu erstellen, indem Sie die Docker-Remote-API aufrufen.

Die gesamte Containerisierung der Pig-Microservice-Plattform basiert auf dieser Konstruktion

<Plugin>
 <groupId>com.spotify</groupId>
 <artifactId>Docker-Maven-Plugin</artifactId>
 ... -Konfigurieren Sie das per XML definierte Dockerfile oder mounten Sie ein externes Dockerfile
</plugin>

<Plugin>
 <groupId>io.fabric8</groupId>
 <artifactId>Docker-Maven-Plugin</artifactId>
  ... -Konfigurieren Sie das per XML definierte Dockerfile oder mounten Sie ein externes Dockerfile
</plugin>

Führen Sie den entsprechenden Plug-In-Zyklus aus: mvn docker:build und mvn docker:push

Ausleger

Die Menge an Code, die sich tatsächlich bei jeder Veröffentlichung eines Projekts ändert, ist nicht groß, insbesondere ist die Möglichkeit von Änderungen in den abhängigen Jars gering. Wenn die ersten beiden Plug-Ins zum Erstellen des Images verwendet werden, wird jedes Mal ein vollständiger Build durchgeführt, was zu einer Verschwendung von Speicher- und Bandbreitenressourcen führt.

Jib ist ein im Juli 2018 von Google veröffentlichtes Tool zum Erstellen von Images für Java-Anwendungen (unterstützt Maven und Gradle). Der Vorteil besteht darin, dass es den Build-Cache wiederverwenden, den Build beschleunigen und das Übertragungsvolumen reduzieren kann.

<!--Konfigurieren Sie das Dockerfile über XML, das im Wesentlichen mit dem externen Dockerfile identisch ist -->
<Plugin>
  <groupId>com.google.cloud.tools</groupId>
  <artifactId>jib-maven-plugin</artifactId>
</plugin>

mvn jib:dockerBuild

Probleme mit den oben genannten drei Lösungen

Im eigentlichen Entwicklungsprozess erstellen die meisten Spring Boot-Projekte Dockerfiles auf die gleiche Weise und müssen nicht über XML oder externe Dockerfiles neu definiert werden.

Die oben genannten Plugins erfordern relativ gute Kenntnisse der Dockerfile-Definitionen, was nicht entwicklerfreundlich ist.

Es gibt keinen guten Grund, die Jar-Layering-Technologie nach Spring Boot 2.3 zu verwenden.

Lösung

Spring Boot 2.4 hat sein eigenes Docker-Build-Tool eingeführt, das in das ursprüngliche Spring-Boot-Maven-Plugin integriert ist. Sie müssen nur das entsprechende Ziellager und die Hostinformationen konfigurieren, um den Image-Aufbau abzuschließen.

Bildbeschreibung hier einfügen

Die folgende Konfiguration kann die obige Abbildung vervollständigen. Ohne Docker auf der Entwicklungsmaschine zu installieren, wird das Image über die Docker Remote API von 192.168.0.10 erstellt und im Image Warehouse von 192.168.0.20 veröffentlicht.

 <Plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>Spring-Boot-Maven-Plugin</artifactId>
  <Konfiguration>
    <Bild>
      <name>192.168.0.20/pig4cloud/${project.artifactId}</name>
      <!-- Automatisch pushen, nachdem der Build ausgeführt wurde -->
      <veröffentlichen>wahr</veröffentlichen>
    </image>
    <!--Konfigurieren Sie die Build-Host-Informationen. Für diese Maschine ist keine Konfiguration erforderlich-->
    <Docker>
			<host>http://192.168.0.10:2375</host>
      <tlsVerify>falsch</tlsVerify>
      <Registrierung veröffentlichen>
        <username>Benutzername</username>
        <password>Passwort</password>
        <url>192.168.0.20</url>
      </publishRegistry>
    </docker>
  </Konfiguration>
</plugin>

Führen Sie den folgenden Befehl aus, um die Image-Erstellung und die automatische Freigabe abzuschließen

mvn spring-boot:build-image

Zusatzbemerkungen

Die Docker-Hostkonfiguration wird nicht wirksam

Der Knoten ist wie in der folgenden Abbildung ① dargestellt konfiguriert, aber ② meldet einen Fehler, der darauf hinweist, dass der Host inkonsistent ist

Bildbeschreibung hier einfügen

Überprüfen Sie, ob die Umgebungsvariable $DOCKER_HOST lokal konfiguriert ist. Nach dem Lesen des Quellcodes habe ich festgestellt, dass diese Variable zuerst gelesen wird.

⋊> ~ echo $DOCKER_HOST 11:07:51
tcp://172.17.0.111:2375

Netzwerkunterstützung

Während des Build-Prozesses werden einige Protokolle abgefangen. Im Folgenden müssen etwa 100 MB zugehörige Abhängigkeiten von GitHub heruntergeladen werden. Dieser Prozess schlägt wahrscheinlich fehl. Es wird empfohlen, dieses Problem durch die Konfiguration eines Proxys oder die Verwendung eines fremden ECS zu lösen.

 :: Spring Boot :: (v2.4.0)
[INFO] > Ersteller wird ausgeführt
[INFO] [Ersteller] Herunterladen von https://github.com/bell-sw/Liberica/releases/download/8u275+1/bellsoft-jre8u275+1-linux-amd64.tar.gz
[INFO] [Ersteller] JVMKill Agent 1.16.0: Beitrag zur Ebene
[INFO] [Ersteller] Herunterladen von https://github.com/cloudfoundry/jvmkill/releases/download/v1.16.0.RELEASE/jvmkill-1.16.0-RELEASE.so
[INFO] [Ersteller] Herunterladen von https://repo.spring.io/release/org/springframework/cloud/spring-cloud-bindings/1.6.0/spring-cloud-bindings-1.6.0.jar
[INFO] [Ersteller] Prüfsumme wird überprüft
[INFO] [Ersteller] 192.168.0.20/pig4cloud/demo:latest
[INFO]
[INFO] Image „192.168.0.20/pig4cloud/demo:latest“ erfolgreich erstellt
[INFO] > Bild „192.168.0.20/pig4cloud/demo:latest“ wird zu 100 % gepusht
[INFO] > Bild '192.168.0.20/pig4cloud/demo:latest' gepusht
[INFO] ERFOLG AUFBAUEN

Dies ist das Ende dieses Artikels über die neue Funktion von Spring Boot 2.4 zum Erstellen von Docker-Images mit einem Klick. Weitere Informationen zum Erstellen von Docker-Images mit Spring Boot 2.4 finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der Ausbreitungseigenschaften von Spring Things
  • Die neuen Funktionen von Spring Boot 2.4 reduzieren den Speicherverbrauch um 95 %
  • Eine umfassende Einführung in die neuen Funktionen von Spring 5
  • Die neuen Funktionen von SpringBoot sind ein globaler Lazy-Loading-Mechanismus
  • Umfassende Analyse des Mechanismus und der Eigenschaften der Spring Security-Filterkette
  • Detaillierte Erklärung der neuen Funktion von SpringBoot2.3: elegantes Herunterfahren
  • Spring MVC akzeptiert Formulare zur automatischen Kapselung von Funktionsinstanzen
  • Vollständige Analyse der Konfigurationsbindung der neuen Funktionen von SpringBoot2.0
  • Einführung in die neuen Funktionen jeder Version von Spring
  • Einführung in die Spring Boot-bezogenen Funktionen von Intellij IDEA 2017
  • Eine kurze Einführung in die neuen Funktionen von Spring Framework 5.0
  • Spring4: Neue Funktionen, Verbesserung der Webentwicklung
  • Kurze Analyse der Übersicht über die neuen Funktionen von Spring 4
  • Von Spring 4 unterstützte Java 8-Funktionen
  • Detaillierte Einführung in die neuen Funktionen des funktionalen Webframeworks von Java Spring 5
  • Detaillierte Erläuterung der Spring Factory-Funktionen

<<:  Verwenden Sie MySQL, um die von der URL zurückgegebenen HTTP-GET-Anforderungsdaten aufzuzeichnen

>>:  Testen des Hyperlink-Öffnungsziels

Artikel empfehlen

Installationsschritte von Docker-CE auf dem Raspberry Pi 4b Ubuntu19-Server

Das Raspberry Pi-Modell ist 4b, 1 G RAM. Das Syst...

Vue-Plugin-Fehler: Auf dieser Seite wurde Vue.js erkannt. Problem gelöst

Das Vue-Plugin meldet einen Fehler: Vue.js wurde ...

Erfahren Sie mehr über JavaScript-Iteratoren

Inhaltsverzeichnis Einführung Wie sieht ein Itera...

Deutsch: Ein Link-Tag vervollständigt href im IE automatisch

Englisch: Ein Link-Tag vervollständigt href im IE...

So aktivieren Sie Fernzugriffsberechtigungen in MySQL

1. Melden Sie sich bei der MySQL-Datenbank an mys...

Node.js+Postman zur Simulation der HTTP-Server- und Client-Interaktion

Inhaltsverzeichnis 1. Node erstellt HTTP-Server 2...

Beispielcode zur Implementierung der WeChat-Kontoaufteilung mit Nodejs

Das Geschäftsszenario des Unternehmens erfordert ...