Java-Container mit Jib erstellen

Jib erstellt Container, ohne ein Dockerfile zu verwenden oder eine Docker-Installation zu erfordern. Sie können Jib in den Jib-Plug-ins für Maven oder Gradle oder in der Jib-Java-Bibliothek verwenden.

Was macht Jib?

Jib übernimmt alle Schritte beim Packen Ihrer Anwendung in ein Container-Image. Sie müssen keine Best Practices für die Erstellung von Dockerfiles oder die Installation von Docker kennen.

Docker-Build-Ablauf:

Diagramm, das die Phasen vom Projekt zur Container-Registry mit Docker zeigt.

Jib-Build-Fluss:

Diagramm ohne Zwischenphasen zwischen Projekt und Container Registry mit Jib.

Jib organisiert Ihre Anwendung in verschiedenen Ebenen, Abhängigkeiten, Ressourcen und Klassen und verwendet das Caching der Docker-Image-Ebene, um Builds schnell zu halten, indem nur Änderungen neu erstellt werden. Die Ebenenorganisation und das kleine Basis-Image von Jib halten die Gesamtgröße des Images klein, was die Leistung und Portabilität verbessert.

Hinweis

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Aktivieren Sie die Container Registry API.

    Aktivieren Sie die API

  5. Laden Sie Java herunter und installieren und konfigurieren Sie es, sofern nicht bereits geschehen.
  6. Installieren Sie Maven 3.5 oder höher.
  7. Installieren und initialisieren Sie das Cloud SDK.
  8. Authentifizieren Sie sich bei Container Registry mit "gcloud" als Docker Credential Helper:
    gcloud auth configure-docker
    Weitere Informationen zur Authentifizierung finden Sie optional in der Dokumentation zur Jib-Konfiguration.

Mit Jib erstellen

  1. Wählen Sie ein vorhandenes Projekt aus und öffnen Sie den Quellordner oder klonen Sie das Beispiel mit dem folgenden Befehl:

         git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
         cd java-docs-samples/run/helloworld

  2. Fügen Sie das Plug-in zu pom.xml hinzu:

    <plugin>
      <groupId>com.google.cloud.tools</groupId>
      <artifactId>jib-maven-plugin</artifactId>
      <version>2.8.0</version>
      <configuration>
        <to>
          <image>gcr.io/PROJECT/IMAGE</image>
        </to>
      </configuration>
    </plugin>
    

    Ersetzen

    • PROJECT durch Ihre Google Cloud-Projekt-ID.
    • IMAGE durch den Namen Ihres Images.

    Wenn Sie pom.xml nicht ändern möchten, können Sie den folgenden Befehl verwenden:

        mvn compile com.google.cloud.tools:jib-maven-plugin:2.8.0:build \
            -Dimage=gcr.io/PROJECT/IMAGE
  3. Erstellen Sie das Image und übertragen Sie es in eine Container Registry:

    mvn compile jib:build

    Sie können den Erfolg prüfen, indem Sie Ihren Container in der Google Container Registry aufrufen.

    Optional: Wenn Sie Docker installiert haben, können Sie Builds auf Ihrer lokalen Docker-Installation erstellen, sodass Sie das Image prüfen oder als anderen lokalen Container ausführen können:

    mvn compile jib:dockerBuild

Zusätzliche Anpassungen

Sie können Ihre Jib-Builds ähnlich wie Dockerfiles anpassen, z. B. Umgebungsvariablen hinzufügen und ein Basis-Image auswählen.

Umgebungsvariablen hinzufügen

Sie können Ihrem Build Umgebungsvariablen ähnlich wie die Anweisung ENV in einem Dockerfile hinzufügen:

<plugin>
  <groupId>com.google.cloud.tools</groupId>
  <artifactId>jib-maven-plugin</artifactId>
  <version>2.8.0</version>
  <configuration>
    <to>
      <image>gcr.io/PROJECT/IMAGE</image>
    </to>
    <container>
      <environment>
        <ENV_VAR>VALUE</ENV_VAR>
      </environment>
    </container>
  </configuration>
</plugin>

Ersetzen

  • PROJECT durch Ihre Google Cloud-Projekt-ID.
  • IMAGE durch den Namen Ihres Images.
  • ENV_VAR mit NAME.
  • VALUE durch den gewünschten Wert.

Ihre Anwendung antwortet nun mit Hello <var>VALUE</var>!

Ändern Sie das Basis-Image

Das Basis-Image entspricht der FROM-Anleitung in einem Dockerfile. Das Basis-Image kann durch Ändern des Felds from.image aktualisiert werden.

Wenn Sie eine Shell zur Fehlerbehebung hinzufügen möchten, legen Sie das Basis-Image auf alpine:3 oder openjdk:VERSION fest (falls Java erforderlich ist).

Zum Hinzufügen von Systempaketen müssen Sie ein Basis-Image mit diesen Paketen erstellen. Weitere Informationen finden Sie unter Container erstellen.

  <plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>2.8.0</version>
    <configuration>
      <from>
        <image>gcr.io/PROJECT/BASE_IMAGE</image>
      </from>
      <to>
        <image>gcr.io/PROJECT/IMAGE_NAME</image>
      </to>
    </configuration>
  </plugin>

Versuchen Sie, das Feld from.image auf ein anderes Java-Basis-Image wie openjdk:8-alpine zu aktualisieren.

Anpassen anderer Java-Aspekte

Jib unterstützt Java-Laufzeitkonfigurationen, die für die Ausführung Ihrer Anwendung erforderlich sein können. Weitere Anpassungen finden Sie unter Erweiterte Nutzung.

Code versenden

gcloud-Standardeinstellungen einrichten

So konfigurieren Sie gcloud mit Standardeinstellungen für den Cloud Run-Dienst:

  1. Legen Sie ein Standardprojekt fest:

    gcloud config set project PROJECT_ID

    Ersetzen Sie PROJECT_ID durch den Namen des Projekts, das Sie für diese Anleitung erstellt haben.

  2. Konfigurieren Sie gcloud für die von Ihnen ausgewählte Region:

    gcloud config set run/region REGION

    Ersetzen Sie REGION durch die unterstützte Cloud Run-Region Ihrer Wahl.

Cloud Run-Standorte

Cloud Run ist regional. Die Infrastruktur, in der die Cloud Run-Dienste ausgeführt werden, befindet sich demnach in einer bestimmten Region. Aufgrund der Verwaltung durch Google sind die Anwendungen in allen Zonen innerhalb dieser Region redundant verfügbar.

Bei der Auswahl der Region, in der Ihre Cloud Run-Dienste ausgeführt werden, ist vorrangig, dass die Anforderungen hinsichtlich Latenz, Verfügbarkeit oder Langlebigkeit erfüllt werden. Sie können im Allgemeinen die Region auswählen, die Ihren Nutzern am nächsten liegt, aber Sie sollten den Standort der anderen Google Cloud-Produkte berücksichtigen, die von Ihrem Cloud Run-Dienst verwendet werden. Die gemeinsame Nutzung von Google Cloud-Produkten an mehreren Standorten kann sich auf die Latenz und die Kosten des Dienstes auswirken.

Cloud Run ist in diesen Regionen verfügbar:

Unterliegt Preisstufe 1

  • asia-east1 (Taiwan)
  • asia-northeast1 (Tokio)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finnland)
  • europe-west1 (Belgien)
  • europe-west4 (Niederlande)
  • us-central1 (Iowa)
  • us-east1 (South Carolina)
  • us-east4 (Northern Virginia)
  • us-west1 (Oregon)

Unterliegt Preisstufe 2

  • asia-east2 (Hongkong)
  • asia-northeast3 (Seoul, Südkorea)
  • asia-southeast1 (Singapur)
  • asia-southeast2 (Jakarta)
  • asia-south1 (Mumbai, Indien)
  • australia-southeast1 (Sydney)
  • europe-central2 (Warsaw, Polen)
  • europe-west2 (London, Vereinigtes Königreich)
  • europe-west3 (Frankfurt, Deutschland)
  • europe-west6 (Zürich, Schweiz)
  • northamerica-northeast1 (Montreal)
  • southamerica-east1 (São Paulo, Brasilien)
  • us-west2 (Los Angeles)
  • us-west3 (Las Vegas)
  • us-west4 (Salt Lake City)

Wenn Sie bereits einen Cloud Run-Dienst erstellt haben, können Sie die Region in der Cloud Console im Cloud Run-Dashboard aufrufen.

In Cloud Run bereitstellen

Stellen Sie Ihren Container mit dem Cloud SDK aus Container Registry in Cloud Run oder Cloud Run for Anthos in Google Cloud bereit.

Stellen Sie das Container-Image mit dem folgenden Befehl bereit:

gcloud run deploy SERVICE-NAME \
    --image gcr.io/PROJECT/IMAGE \
    --platform managed

Ersetzen

  • SERVICE-NAME durch den von Ihnen ausgewählten Dienstnamen.
  • PROJECT durch Ihre Google Cloud-Projekt-ID.
  • IMAGE durch den Namen Ihres Images.

Beachten Sie, dass das Container-Image für den Dienst und die Region (Cloud Run) oder Cluster (Cloud Run for Anthos in Google Cloud) bereitgestellt wird, die Sie zuvor unter gcloud einrichten konfiguriert haben.

Bei der Bereitstellung in Cloud Run werden Sie aufgefordert, nicht authentifizierte Aufrufe zuzulassen. Wenn Sie sofort auf Ihren Dienst zugreifen möchten, antworten Sie mit y und "Ja" auf die Aufforderung "Nicht authentifiziert zulassen". Wenn Ihr Dienst privat ist und Anfragen Authentifizierung enthalten müssen, antworten Sie mit n und "Nein" auf die Aufforderung "Nicht authentifiziert zulassen".

Wenn Ihr Dienst öffentlich ist, verwenden Sie die URL, die nach einer erfolgreichen Bereitstellung angezeigt wird, um den bereitgestellten Container aufzurufen. Wenn der Dienst privat ist, rufen Sie ihn mit dem folgenden curl-Befehl auf:

curl -H "Authorization: bearer $(gcloud auth print-identity-token)" SERVICE_URL

Informationen zur Bereitstellung in Cloud Run für Anthos in Google Cloud finden Sie unter Zugriff auf den bereitgestellten Dienst.

Bereinigen

Wenn Sie ein neues Projekt für diese Anleitung erstellt haben, löschen Sie das Projekt. Wenn Sie ein vorhandenes Projekt verwendet haben und es beibehalten möchten, ohne die Änderungen in dieser Anleitung hinzuzufügen, löschen Sie die für die Anleitung erstellten Ressourcen.

Projekt löschen

Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.

So löschen Sie das Projekt:

  1. Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Anleitungsressourcen löschen

  1. Löschen Sie den Cloud Run-Dienst, den Sie in dieser Anleitung bereitgestellt haben:

    gcloud run services delete SERVICE-NAME

    Dabei ist SERVICE-NAME der von Ihnen ausgewählte Dienstname.

    Sie können Cloud Run-Dienste auch über die Google Cloud Console löschen.

  2. Entfernen Sie die Konfiguration der Standardregion gcloud, die Sie während der Einrichtung für die Anleitung hinzugefügt haben:

     gcloud config unset run/region
    
  3. Entfernen Sie die Projektkonfiguration:

     gcloud config unset project
    

Nächste Schritte