Creazione di container Java con Jib

Jib crea container senza utilizzare un Dockerfile o richiedendo un'installazione di Docker. Puoi utilizzare Jib nei plug-in Jib per Maven o Gradle oppure la libreria Jib Java.

Che cosa fa Jib?

Jib gestisce tutti i passaggi della creazione dell'applicazione in un'immagine container. Non devi conoscere le best practice per la creazione di Dockerfile o l'installazione di Docker.

Flusso di build Docker:

Diagramma che mostra le fasi dal progetto al container Registry utilizzando Docker.

Flusso di compilazione Jib:

Diagramma che non mostra fasi intermedie
       dal progetto al container Registry utilizzando Jib.

Jib organizza la tua applicazione in livelli separati, dipendenze, risorse e classi, e utilizza la memorizzazione nella cache del livello dell'immagine Docker per mantenere le build veloci semplicemente ricostruendo le modifiche. L'organizzazione del livello di Jib'e la piccola immagine di base mantiene le dimensioni complessive dell'immagine, il che migliora le prestazioni e la portabilità.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  6. Attiva l'API Container Registry.

    Abilita l'API

  7. Se non hai Java, scaricalo, installalo e configuralo.
  8. Installa Maven 3.5 o versioni successive.
  9. Installa e inizializza l'interfaccia a riga di comando di Google Cloud.
  10. Esegui l'autenticazione in Container Registry utilizzando l'interfaccia a riga di comando di Google Cloud come assistente di credenziali Docker:
    gcloud auth configure-docker
    Consulta la documentazione di configurazione del Jib per altri modi di autenticazione.

Edificio che utilizza Jib

  1. Seleziona un progetto esistente e vai alla cartella di origine oppure clona l'esempio con il comando seguente:

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

  2. Aggiungi il plug-in al tuo pom.xml:

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

    Sostituisci

    • PROJECT con il tuo ID progetto Google Cloud.
    • IMAGE con il nome della tua immagine.

    Se non vuoi modificare il tuo pom.xml, puoi usare il comando:

        mvn compile com.google.cloud.tools:jib-maven-plugin:2.8.0:build \
            -Dimage=gcr.io/PROJECT/IMAGE
  3. Crea ed esegui il push dell'immagine a un Container Registry:

    mvn compile jib:build

    Puoi verificare l'esito positivo visualizzando il tuo container in Container Registry.

    Facoltativamente, se hai installato Docker, puoi creare la tua installazione Docker locale per poter ispezionare o eseguire l'immagine come qualsiasi altro container locale:

    mvn compile jib:dockerBuild

Personalizzazioni aggiuntive

Puoi personalizzare le build del Jib in modi simili ai Dockerfile, ad esempio con l'aggiunta di variabili di ambiente e la selezione di un'immagine di base.

Aggiungi variabili di ambiente

Puoi aggiungere variabili di ambiente alla build in modo simile all'istruzione ENV in un Dockerfile come segue:

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

Sostituisci

  • PROJECT con il tuo ID progetto Google Cloud.
  • IMAGE con il nome della tua immagine.
  • ENV_VAR con NAME
  • VALUE con il valore desiderato.

Ora la tua domanda risponderà con Hello <var>VALUE</var>!

Cambia l'immagine di base

L'immagine di base equivale alle istruzioni FROM in un Dockerfile. L'immagine di base può essere aggiornata modificando il campo from.image.

Se vuoi includere una shell per il debug, imposta l'immagine di base su alpine:3 o openjdk:VERSION (se serve Java).

Per aggiungere pacchetti di sistema, devi creare un'immagine di base con i pacchetti installati. Per ulteriori informazioni, consulta Creazione di container.

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

Prova ad aggiornare il campo from.image a un'altra immagine di base di Java, ad esempio openjdk:8-alpine.

Personalizzazione di altri aspetti di Java

Jib supporta le configurazioni di runtime Java che potrebbero essere necessarie per eseguire l'applicazione. Per ulteriori personalizzazioni, consulta la sezione Utilizzo esteso.

Spedizione del codice

Configurazione delle impostazioni predefinite di gcloud

Per configurare gcloud con i valori predefiniti per il tuo servizio Cloud Run:

  1. Imposta il progetto predefinito:

    gcloud config set project PROJECT_ID

    Sostituisci PROJECT_ID con il nome del progetto creato per questo tutorial.

  2. Configura gcloud per l'area geografica scelta:

    gcloud config set run/region REGION

    Sostituisci REGION con l'area geografica supportata da Cloud Run a tua scelta.

Località Cloud Run

Cloud Run ha un'area geografica, il che significa che l'infrastruttura che esegue i tuoi servizi Cloud Run si trova in un'area geografica specifica ed è gestita da Google per essere disponibile in modo ridondante in tutte le zone dell'area geografica.

Soddisfare i requisiti di latenza, disponibilità o durabilità è un fattore principale per selezionare l'area geografica in cui vengono eseguiti i servizi Cloud Run. In genere, puoi selezionare l'area geografica più vicina agli utenti, ma devi considerare la località degli altri prodotti Google Cloud utilizzati dal servizio Cloud Run. L'utilizzo combinato dei prodotti Google Cloud in più località può influire sulla latenza del servizio e sui costi.

Cloud Run è disponibile nelle seguenti aree geografiche:

Soggetto ai prezzi di Livello 1

Soggetto ai prezzi di Livello 2

  • asia-east2 (Hong Kong)
  • asia-northeast3 (Seul, Corea del Sud)
  • asia-southeast1 (Singapore)
  • asia-southeast2 (Giacarta)
  • asia-south1 (Mumbai, India)
  • asia-south2 (Delhi, India)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Varsavia, Polonia)
  • europe-west2 (Londra, Regno Unito)
  • europe-west3 (Francoforte, Germania)
  • europe-west6 (Zurigo, Svizzera) icona Fogliolina A basse emissioni di CO2
  • northamerica-northeast1 (Montreal) icona Fogliolina CO basso2
  • northamerica-northeast2 (Toronto) icona Fogliolina Basso contenuto di CO2
  • southamerica-east1 (San Paolo, Brasile) icona Fogliolina Bassa monossido di carbonio2
  • southamerica-west1 (Santiago, Cile)
  • us-west2 (Los Angeles)
  • us-west3 (salina sul lago)
  • us-west4 (Las Vegas)

Se hai già creato un servizio Cloud Run, puoi visualizzare l'area geografica nella dashboard di Cloud Run in Cloud Console.

esegui il deployment in Cloud Run

Esegui il deployment del tuo container da Container Registry utilizzando l'interfaccia a riga di comando gcloud su Cloud Run o Cloud Run for Anthos.

Esegui il deployment dell'immagine container utilizzando il seguente comando:

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

Sostituisci

  • SERVICE-NAME con il nome del servizio che hai scelto.
  • PROJECT con il tuo ID progetto Google Cloud.
  • IMAGE con il nome della tua immagine.

Tieni presente che il deployment dell'immagine container è eseguito sul servizio e sull'area geografica (Cloud Run) o sul cluster (Cloud Run for Anthos) configurati in precedenza nella sezione Configurazione di gcloud.

Se esegui il deployment in Cloud Run, ti verrà chiesto di consentire le chiamate non autenticate. Se vuoi accedere immediatamente al tuo servizio, rispondi y e rispondi "Sì" al messaggio "consenti non autenticati". Se il servizio è privato e le richieste devono includere l'autenticazione, rispondi "n" alla richiesta "consente di eseguire l'autenticazione non autenticata".

Se il servizio è pubblico, utilizza l'URL visualizzato dopo un deployment riuscito per visitare il container di cui hai eseguito il deployment. Se il servizio è privato, utilizza il seguente comando curl per richiamarlo:

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

Se hai eseguito il deployment in Cloud Run for Anthos, vedi Accesso al servizio di cui hai eseguito il deployment.

Esegui la pulizia

Se hai creato un nuovo progetto per questo tutorial, elimina il progetto. Se hai utilizzato un progetto esistente e vuoi mantenerlo senza le modifiche aggiunte in questo tutorial, elimina le risorse create per il tutorial.

Elimina il progetto

Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.

Per eliminare il progetto:

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Eliminazione delle risorse del tutorial

  1. Elimina il servizio Cloud Run di cui hai eseguito il deployment in questo tutorial:

    gcloud run services delete SERVICE-NAME

    Dove SERVICE-NAME è il nome del servizio che hai scelto.

    Puoi anche eliminare i servizi Cloud Run da Google Cloud Console.

  2. Rimuovi la configurazione dell'area geografica predefinita di gcloud che hai aggiunto durante la configurazione del tutorial:

     gcloud config unset run/region
    
  3. Rimuovi la configurazione del progetto:

     gcloud config unset project
    

Passaggi successivi

  • Per scoprire di più sul contratto che i container devono rispettare per poter essere sottoposti a deployment in Cloud Run, vedi Contratto container.
  • Per automatizzare le build e i deployment dei tuoi servizi Cloud Run utilizzando i trigger di Cloud Build, configura il deployment continuo.
  • Per saperne di più su come utilizzare e personalizzare Jib, consulta la pagina relativa al repository GitHub di Jib's.