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. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Container Registry API.

    Enable the API

  7. Laden Sie Java herunter und installieren und konfigurieren Sie es, sofern nicht bereits geschehen.
  8. Installieren Sie Maven 3.5 oder höher.
  9. Installieren und initialisieren Sie Google Cloud CLI.
  10. Authentifizieren Sie sich mit der Google Cloud-Befehlszeile als Docker Credential Assistent bei Container Registry:
    gcloud auth configure-docker
    Weitere Möglichkeiten zur Authentifizierung finden Sie 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 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

Unterliegt Preisstufe 2

  • asia-east2 (Hongkong)
  • asia-northeast3 (Seoul, Südkorea)
  • asia-southeast1 (Singapur)
  • asia-southeast2 (Jakarta)
  • asia-south1 (Mumbai, Indien)
  • asia-south2 (Delhi, Indien)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Warschau, Polen)
  • europe-west2 (London, Vereinigtes Königreich)
  • europe-west3 (Frankfurt, Deutschland)
  • europe-west6 (Zürich, Schweiz) Blattsymbol Niedriger CO2-Ausstoß
  • northamerica-northeast1 (Montreal) Blattsymbol Niedriger CO2-Ausstoß
  • northamerica-northeast2 (Toronto) Blattsymbol Niedriger CO2-Ausstoß
  • southamerica-east1 (São Paulo, Brasilien) Blattsymbol Niedriges CO2
  • southamerica-west1 (Santiago, Chile)
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

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 über die gcloud-Befehlszeile für Cloud Run oder Cloud Run for Anthos aus Container Registry 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 den 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 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. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

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
    

Weitere Informationen