Detaillierte Schritte zur Verwendung von Jib für die Docker-Bereitstellung in Spring Cloud

Detaillierte Schritte zur Verwendung von Jib für die Docker-Bereitstellung in Spring Cloud

Einführung in Jib

Jib ist eine von Google entwickelte Bibliothek, die Docker- und OCI-Images von Java-Anwendungen direkt erstellen kann. Sie wird in Form von Maven- und Gradle-Plug-Ins bereitgestellt.

Mit Jib können Java-Entwickler zum Erstellen von Containern die ihnen vertrauten Java-Tools verwenden. Jib ist ein schnelles und einfaches Tool zum Erstellen von Container-Images, das alle erforderlichen Schritte zum Verpacken Ihrer Anwendung in ein Container-Image übernimmt. Sie müssen dafür weder eine Docker-Datei schreiben noch Docker installieren und es lässt sich direkt in Maven und Gradle integrieren – fügen Sie einfach das Plug-In zu Ihrem Build hinzu, und Sie können Ihre Java-Anwendung sofort in einen Container packen.

Jib Open Source-Adresse: https://github.com/GoogleContainerTools/jib

Allgemeiner Docker-Build-Prozess

alt img

Jib-Build-Prozess

alt img

Jib-Integration

Das Projekt ist Spring Cloud, Version Hoxton.SR1.

alt img

Um Jib zu integrieren, müssen Sie nur das Jib-Plugin zu POM hinzufügen.

<Plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>jib-maven-plugin</artifactId>
        <version>${jib.version}</version>
      </plugin>

Jib-bezogene Komplettkonfiguration

<Eigenschaften>
    <!-- Jib-Docker-Konfiguration-->
    <!-- Jib-Version -->
    <jib.version>2.2.0</jib.version>
    <!-- Ob die Jib-Verpackung übersprungen werden soll -->
    <jib.skip>wahr</jib.skip>
    <!-- Name des Warehouse-Bildes -->
    <jib.repository.name>akk-system</jib.repository.name>
    <!-- Startklasse -->
    <jib.main.class>com.akk.GatewayApplication</jib.main.class>
    <!-- Benutzername für die Anmeldung beim Warehouse -->
    <REGISTRY_USERNAME>222222222222</REGISTRY_USERNAME>
    <!-- Lager-Login-Passwort -->
    <REGISTRIERUNGSPASSWORT>111111111111</REGISTRIERUNGSPASSWORT>
</Eigenschaften>
 <Plugins>
    <Plugin>
      <groupId>com.google.cloud.tools</groupId>
      <artifactId>jib-maven-plugin</artifactId>
      <version>${jib.version}</version>
      <Konfiguration>
        <überspringen>${jib.skip}</überspringen>
        <!-- Konfigurieren Sie das Basis-Image -->
        <von>
          <image>openjdk:8-jre-alpine</image>
        </von>
        <!-- Push-Adresse, Warehouse-Name und Spiegelname konfigurieren-->
        <bis>
          <image>registry.cn-hangzhou.aliyuncs.com/akk_java/${jib.repository.name}</image>
          <Tags>
            <!-- <tag>${jib.repository.name}</tag>-->
            <!-- <tag>${version}</tag>-->
          </tags>
          <Berechtigung>
            <Benutzername>${REGISTRY_USERNAME}</Benutzername>
            <Passwort>${REGISTRY_PASSWORD}</Passwort>
          </auth>
        </to>
        <!--Private Server sind http statt https. Standardmäßig pusht Jib nicht auf private Server, die nicht https verwenden. Private Server werden hinzugefügt, öffentliche Server jedoch nicht. -->
        <!-- <allowInsecureRegistries>true</allowInsecureRegistries>-->
        <Behälter>
          <Hauptklasse>${jib.main.class}</Hauptklasse>
          <Beschriftungen>
            <name>${Artefakt-Id}</name>
          </Beschriftungen>
        </container>
      </Konfiguration>
      <!--An Maven-Lebenszyklus gebunden-->
      <!-- <Ausführungen>-->
      <!-- <Ausführung>-->
      <!-- <phase>Paket</phase>-->
      <!-- <Ziele>-->
      <!-- <goal>bauen</goal>-->
      <!-- </goals>-->
      <!-- </execution>-->
      <!-- </executions>-->
    </plugin>
  </plugins>

Parameterbeschreibung:
${jib.version} Jib-Version: Wählen Sie nach Belieben
${jib.skip} Ob Jib übersprungen werden soll: Das Jib-Plug-In wird im POM unter dem Stammverzeichnis abgelegt, sodass alle Module des Projekts Jib-Operationen ausführen. Wenn die öffentlichen Abhängigkeitsmodule des Projekts nicht gepackt werden müssen, können Sie diese Eigenschaft neu definieren und Jib überspringen
${jib.repository.name} Name des Mirror-Push-Repository: Repository-Name
${version} Bildversion: die Version des gepushten Bildes
${REGISTRY_USERNAME} Benutzername des Spiegel-Repositorys: Anmeldekonto für privates Repository
${REGISTRY_PASSWORD} Passwort für Spiegel-Repository: Anmeldepasswort für privates Repository
${jib.main.class} Startklasse des Projektmoduls: Startklasse des Projektmoduls, Spring Boot-Startklasse

form -Tag definiert das Basis-Image, das hier auf openjdk:8-jre-alpine basiert, Sie können aber auch andere verwenden. to definiert die Push-Informationen für das kompilierte Bild, image definiert die Push-Bildnameninformationen und tags “ pusht das Bild-Tag. Sie können das angegebene Bild über das Tag abrufen. auth definiert die Anmeldeinformationen für ein privates Repository. container definiert die Inhaltsinformationen des Bildes und mainClass startet die Hauptklasse. labels Schlüssel-Wert-Paare für Anwendungsmetadaten, ähnlich den Beschriftungen von Docker. Die folgenden Ausführungen binden Befehle. Hier ist der Jib-Build-Befehl an den Maven-Package-Befehl gebunden. Beim Ausführen des MVN-Pakets wird Jib Build automatisch ausgeführt. (Weitere Konfigurations-Tags finden Sie unter https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin)

An diesem Punkt können Sie den mit dem Jib-Plugin verbundenen Inhalt im Maven-Menü von idea sehen:

alt img

Beispiel: Gateway-Modul (muss das Image packen), die POM-Konfiguration ist wie folgt

<?xml version="1.0" encoding="UTF-8"?>
<Projekt xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <übergeordnetes Element>
    <artifactId>akk-system</artifactId>
    <groupId>com.akk</groupId>
    <version>0.0.1-SNAPSHOT</version>
  </übergeordnet>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>Gateway</artifactId>

  <Eigenschaften>
    <!-- Jib-Docker-Konfiguration-->
    <jib.version>2.2.0</jib.version>
    <jib.skip>falsch</jib.skip>
    <jib.repository.name>akk-gateway</jib.repository.name>
    <jib.main.class>com.akk.GatewayApplication</jib.main.class>
  </Eigenschaften>

  <Abhängigkeiten>
    <Abhängigkeit>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>Spring-Cloud-Starter-Gateway</artifactId>
    </Abhängigkeit>
    <Abhängigkeit>
      <groupId>com.github.xiaoymin</groupId>
      <artifactId>knife4j-spring-boot-starter</artifactId>
    </Abhängigkeit>
  </Abhängigkeiten>

</Projekt>

Allgemeines öffentliches Abhängigkeitspaket pom (das Image muss nicht verpackt werden):

<?xml version="1.0" encoding="UTF-8"?>
<Projekt xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <übergeordnetes Element>
    <artifactId>akk-system</artifactId>
    <groupId>com.akk</groupId>
    <version>0.0.1-SNAPSHOT</version>
  </übergeordnet>
  <artifactId>allgemein</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <Eigenschaften>
    <!-- Jib-Docker-Konfiguration-->
    <jib.version>2.2.0</jib.version>
    <jib.skip>wahr</jib.skip>
    <jib.repository.name>akk-system</jib.repository.name>
    <jib.image.name>akk-system</jib.image.name>
  </Eigenschaften>

  <Abhängigkeiten>
    <!-- Abhängigkeitsinformationen -->
  </Abhängigkeiten>

</Projekt>

Darunter decken die Eigenschaften die relevante Parameterkonfiguration von Jib ab.

Verpackungsbild

Führen Sie mvn package jib:dockerBuild zum Verpacken aus.

alt img

Nachdem die Verpackung abgeschlossen ist, überprüfen Sie das lokale Docker-Image (der Befehl jib:dockerBuild lädt das Image nicht hoch, aber der Befehl jib:build lädt das Image hoch).

alt img

Packen und Hochladen des Bildes

Führen Sie mvn package jib:build um zu verpacken und hochzuladen.
Melden Sie sich beim privaten Docker-Warehouse an

Docker-Login --username=Benutzername --password=Passwort registry.cn-hangzhou.aliyuncs.com

Ziehen Sie das Bild

Docker-Pull-Registrierung.cn-hangzhou.aliyuncs.com/akk_java/akk-gateway:latest 

alt img

Docker-Bereitstellungsprojekt

Die Bereitstellung von Microservice-Projekten umfasst viele Module und erfolgt im Allgemeinen in einer verteilten Clusterumgebung. Die manuelle Bereitstellung ist daher umständlich. Sie können automatisierte Bereitstellungstools wie Jenkins verwenden. Nachdem Sie Jenkins zum Verpacken und Hochladen des Images verwendet haben, melden Sie sich beim Remote-Server an und führen Sie das Skript aus, um es zu starten. wie:

#!/bin/bash
# Melden Sie sich beim Docker-Repository andocker login --username=Benutzername --password=Passwort registry.cn-hangzhou.aliyuncs.com
# Stoppen Sie den laufenden Container docker ps | grep akk_java | awk '{print $1}' | xargs docker stop
# Löschen Sie den Container docker ps -a -q | grep akk_java | awk '{print $1}' | xargs docker rm
# Image-Datei abfragen und Docker-Images löschen | grep akk_java | awk '{print $3}' | xargs docker rmi
# Ziehen Sie das Image docker pull registry.cn-hangzhou.aliyuncs.com/akk_java/akk-user:latest
Docker-Pull-Registrierung.cn-hangzhou.aliyuncs.com/akk_java/akk-gateway:latest
Docker-Pull-Registrierung.cn-hangzhou.aliyuncs.com/akk_java/akk-task:latest
Docker-Pull-Registrierung.cn-hangzhou.aliyuncs.com/akk_java/akk-store:latest
Docker-Pull-Registrierung.cn-hangzhou.aliyuncs.com/akk_java/akk-pay:latest
Docker-Pull-Registrierung.cn-hangzhou.aliyuncs.com/akk_java/akk-app-api:latest
Docker-Pull-Registrierung.cn-hangzhou.aliyuncs.com/akk_java/akk-sso-auth:latest
Docker-Pull-Registrierung.cn-hangzhou.aliyuncs.com/akk_java/akk-seata:latest

Führen Sie nach dem erneuten Abrufen des Images den Befehl docker run aus, um Docker zu starten.

Damit ist dieser Artikel über die detaillierten Schritte zur Verwendung von Jib für die Docker-Bereitstellung in Spring Cloud abgeschlossen. Weitere relevante Inhalte zur Docker-Bereitstellung in Spring Cloud 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:
  • Verwenden von Jib zum Verpacken von Docker-Images
  • Detaillierte Schritte zum Erstellen, Ausführen, Veröffentlichen und erstmaligen Abrufen eines Docker-Images
  • Analyse zweier Methoden zum Erstellen von Docker-Images
  • Analyse des Docker-Image-Erstellungsprinzips (Sie können ein Image erstellen, ohne Docker zu installieren)
  • Verwenden Sie GoogleContainerTools, um Jib in einen Container zu packen und ein Docker-Image zu erstellen.

<<:  Der gesamte Prozessdatensatz der rekursiven Komponentenkapselung von Vue3

>>:  Detaillierte Erklärung der Sperrstruktur in MySQL

Artikel empfehlen

Analyse des Implementierungsprozesses der Docker-Container-Orchestrierung

In tatsächlichen Entwicklungs- oder Produktionsum...

So erstellen Sie eine Ansicht für mehrere Tabellen in MySQL

Erstellen Sie in MySQL eine Ansicht für zwei oder...

Eine kurze Diskussion über die Definition und Vorsichtsmaßnahmen von H-Tags

Den Ergebnissen zufolge gibt es für die Definitio...

WeChat-Applet implementiert Taschenrechnerfunktion

In diesem Artikel wird der spezifische Code für d...

Detaillierte Erklärung der CSS3-Textschatteneigenschaft Textschatten

Textschatten-Textschatten-Eigenschaftseffekte: 1....

JavaScript realisiert den Drag-Effekt der Modalbox

Hier ist ein Fall des Ziehens einer modalen Box. ...

Detaillierte Erklärung der HTML-Formularelemente (Teil 1)

HTML-Formulare werden verwendet, um verschiedene ...

So legen Sie die Anzahl der MySQL-Verbindungen fest und ermitteln sie

Holen Sie sich die Anzahl der Verbindungen --- Ho...

Sprungcode für HTML-Seite

Speichern Sie den folgenden Code als Standard-Home...

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

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

Detaillierte Erklärung zur korrekten Installation von OpenCV auf Ubuntu

Dieser Artikel beschreibt, wie man OpenCV mit C++...