Créer des conteneurs Java avec Jib

Jib crée des conteneurs sans utiliser de fichier Dockerfile ni nécessiter l'installation de Docker. Vous pouvez utiliser Jib dans les plug-ins Jib pour Maven ou Gradle, ou utiliser la bibliothèque Java Jib.

Que fait Jib ?

Jib gère toutes les étapes de l'empaquetage de votre application dans une image de conteneur. Vous n'avez pas besoin de connaître les bonnes pratiques pour créer des fichiers Dockerfile ou installer Docker.

Flux de compilation Docker :

Schéma illustrant les étapes entre le projet et Container Registry en cas d'utilisation de Docker.

Flux de compilation Jib :

Schéma illustrant l'absence d'étapes intermédiaires entre le projet et le registre de conteneurs en cas d'utilisation de Jib.

Jib organise votre application en plusieurs couches (dépendances, ressources et classes) et utilise la mise en cache des couches d'images Docker pour accélérer les compilations en recréant uniquement les modifications. L'organisation des couches de Jib et l'image de base de petite taille réduisent la taille globale de l'image, ce qui améliore les performances et la portabilité.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  5. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  6. Activez l'API Container Registry

    Activer l'API

  7. Si vous n'avez pas encore Java, téléchargez, installez et configurez Java.
  8. Installez Maven 3.5 ou une version ultérieure.
  9. Installez et initialisez la CLI Google Cloud.
  10. Authentifiez-vous auprès de Container Registry, en utilisant la CLI Google Cloud comme assistant d'identification Docker:
    gcloud auth configure-docker
    Vous pouvez également consulter la documentation sur la configuration de Jib pour découvrir d'autres méthodes d'authentification.

Compiler à l'aide de Jib

  1. Sélectionnez un projet existant et accédez au dossier source ou clonez l'exemple à l'aide de la commande suivante :

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

  2. Ajoutez le plug-in à votre fichier 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>
    

    Remplacer

    • PROJECT par l'ID de votre projet Google Cloud
    • IMAGE par le nom de votre image.

    Si vous ne souhaitez pas modifier votre fichier pom.xml, vous pouvez utiliser la commande suivante :

        mvn compile com.google.cloud.tools:jib-maven-plugin:2.8.0:build \
            -Dimage=gcr.io/PROJECT/IMAGE
  3. Compilez et transférez l'image vers un registre de conteneurs :

    mvn compile jib:build

    Vous pouvez vérifier le bon déroulement de l'opération en affichant votre conteneur dans Container Registry.

    Si vous avez installé Docker, vous pouvez éventuellement compiler dans votre installation Docker locale afin d'inspecter ou d'exécuter l'image comme tout autre conteneur local :

    mvn compile jib:dockerBuild

Autres personnalisations

Vous pouvez personnaliser vos compilations Jib de manière similaire aux fichiers Dockerfile, par exemple en ajoutant des variables d'environnement et en sélectionnant une image de base.

Ajouter des variables d'environnement

Vous pouvez ajouter des variables d'environnement à votre compilation de la même manière qu'avec l'instruction ENV dans un fichier Dockerfile, comme suit :

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

Remplacer

  • PROJECT par l'ID de votre projet Google Cloud
  • IMAGE par le nom de votre image.
  • ENV_VAR correspond à NAME.
  • VALUE par la valeur souhaitée.

Votre application va maintenant envoyer la réponse Hello <var>VALUE</var>!

Modifier l'image de base

L'image de base est équivalente aux instructions FROM d'un fichier Dockerfile. L'image de base peut être mise à jour en modifiant le champ from.image.

Si vous souhaitez inclure une interface système pour le débogage, définissez l'image de base sur alpine:3 ou openjdk:VERSION (si Java est nécessaire).

Pour ajouter des packages système, vous devez créer une image de base avec ces packages installés. Pour plus d'informations, reportez-vous à la section Créer des conteneurs.

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

Essayez de mettre à jour le champ from.image vers une autre image de base Java, telle que openjdk:8-alpine.

Personnaliser d'autres aspects Java

Jib est compatible avec les configurations d'exécution Java qui peuvent être nécessaires pour exécuter votre application. Pour plus de personnalisations, consultez la section Extended Usage.

Transmettre le code

Configurer les paramètres par défaut de gcloud

Pour configurer gcloud avec les valeurs par défaut pour votre service Cloud Run, procédez comme suit :

  1. Définissez le projet par défaut :

    gcloud config set project PROJECT_ID

    Remplacez PROJECT_ID par le nom du projet que vous avez créé pour ce tutoriel.

  2. Configurez gcloud pour la région choisie :

    gcloud config set run/region REGION

    Remplacez REGION par la région Cloud Run compatible de votre choix.

Emplacements Cloud Run

Cloud Run est régional, ce qui signifie que l'infrastructure qui exécute vos services Cloud Run est située dans une région spécifique et gérée par Google pour être disponible de manière redondante dans toutes les zones de cette région.

Lors de la sélection de la région dans laquelle exécuter vos services Cloud Run, vous devez tout d'abord considérer vos exigences en matière de latence, de disponibilité et de durabilité. Vous pouvez généralement sélectionner la région la plus proche de vos utilisateurs, mais vous devez tenir compte de l'emplacement des autres produits Google Cloud utilisés par votre service Cloud Run. L'utilisation conjointe de produits Google Cloud dans plusieurs emplacements peut avoir une incidence sur la latence et le coût de votre service.

Cloud Run est disponible dans les régions suivantes :

Soumis aux tarifs de niveau 1

Soumis aux tarifs de niveau 2

  • asia-east2 (Hong Kong)
  • asia-northeast3 (Séoul, Corée du Sud)
  • asia-southeast1 (Singapour)
  • asia-southeast2 (Jakarta)
  • asia-south1 (Mumbai, Inde)
  • asia-south2 (Delhi, Inde)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Varsovie, Pologne)
  • europe-west2 (Londres, Royaume-Uni)
  • europe-west3 (Francfort, Allemagne)
  • europe-west6 (Zurich, Suisse) Icône Feuille Faibles émissions de CO2
  • northamerica-northeast1 (Montréal) Icône Feuille Faibles émissions de CO2
  • northamerica-northeast2 (Toronto) Icône Feuille Faibles émissions de CO2
  • southamerica-east1 (São Paulo, Brésil) Icône Feuille Faibles émissions de CO2
  • southamerica-west1 (Santiago, Chili)
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Si vous avez déjà créé un service Cloud Run, vous pouvez afficher la région dans le tableau de bord Cloud Run de Cloud Console.

Déployer une application dans Cloud Run

Déployez votre conteneur à partir de Container Registry à l'aide de la CLI gcloud vers Cloud Run ou Cloud Run pour Anthos.

Déployez l'image de conteneur à l'aide de la commande suivante :

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

Remplacer

  • SERVICE-NAME par le nom de service que vous avez choisi.
  • PROJECT par l'ID de votre projet Google Cloud
  • IMAGE par le nom de votre image.

Notez que l'image de conteneur est déployée sur le service et la région (Cloud Run) ou sur le cluster (Cloud Run for Anthos sur Google Cloud) que vous avez précédemment configurés dans la section Configurer gcloud.

Si vous déployez sur Cloud Run, vous serez invité à autoriser les appels non authentifiés. Si vous souhaitez accéder immédiatement à votre service, répondez y, "Oui", à l'invite "Autoriser sans authentification". Si votre service est privé et que les requêtes doivent inclure l'authentification, répondez n, "Non", à l'invite "Autoriser sans authentification".

Si votre service est public, utilisez l'URL qui s'affiche après un déploiement réussi pour accéder au conteneur déployé. Si votre service est privé, utilisez la commande curl suivante pour appeler votre service :

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

S'il est déployé dans Cloud Run for Anthos, consultez la section Accéder à votre service déployé.

Effectuer un nettoyage

Si vous avez créé un projet pour ce tutoriel, supprimez-le. Si vous avez utilisé un projet existant et que vous souhaitez le conserver sans les modifications du présent tutoriel, supprimez les ressources créées pour ce tutoriel.

Supprimer le projet

Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.

Pour supprimer le projet :

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Supprimer les ressources du tutoriel

  1. Supprimez le service Cloud Run que vous avez déployé dans ce tutoriel :

    gcloud run services delete SERVICE-NAME

    SERVICE-NAME est le nom de service que vous avez choisi.

    Vous pouvez également supprimer des services Cloud Run à partir de Google Cloud Console.

  2. Supprimez la configuration régionale gcloud par défaut que vous avez ajoutée lors de la configuration du tutoriel :

     gcloud config unset run/region
    
  3. Supprimez la configuration du projet :

     gcloud config unset project
    

Étape suivante

  • Pour en savoir plus sur le contrat que vos conteneurs doivent respecter pour pouvoir être déployés dans Cloud Run, consultez la page Contrat relatif aux conteneurs.
  • Pour automatiser les versions et les déploiements de vos services Cloud Run à l'aide des déclencheurs Cloud Build, configurez le déploiement continu.
  • Pour en savoir plus sur l'utilisation et la personnalisation de Jib, consultez le dépôt GitHub de Jib.