Cette page explique comment créer une application Hello World simple, l'intégrer dans une image de conteneur, importer l'image de conteneur dans Container Registry, puis déployer l'image de conteneur dans Cloud Run. L'exemple est proposé dans plusieurs langages, mais notez que vous pouvez en utiliser d'autres en plus de ceux présentés.
Ce guide de démarrage rapide est disponible sous forme de tutoriel interactif dans Cloud Shell :
Vous pouvez également suivre ce guide de démarrage rapide avec un compte de démonstration sur Qwiklabs.
Avant de commencer
- Connectez-vous à votre compte Google.
Si vous n'en possédez pas déjà un, vous devez en créer un.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.
- Installez et initialisez le SDK Cloud.
Écrire l'exemple d'application
Pour obtenir des instructions sur la création d’un exemple d’application Hello World exécutée dans Cloud Run, cliquez sur l’onglet correspondant à votre langage :
Go
Créez un répertoire nommé
helloworld
et modifiez les sous-répertoires comme suit :mkdir helloworld cd helloworld
Initialisez un fichier
go.mod
pour déclarer le module go :Créez un fichier nommé
main.go
et collez-y le code suivant :Ce code crée un serveur Web de base qui écoute le port défini par la variable d'environnement
PORT
.
Votre application est terminée et prête à être conteneurisée, puis importée dans Container Registry.
Node.js
Créez un répertoire nommé
helloworld
et modifiez les sous-répertoires comme suit :mkdir helloworld cd helloworld
Créez un fichier
package.json
avec le contenu suivant :Dans le même répertoire, créez un fichier
index.js
, puis copiez-y les lignes suivantes :Ce code crée un serveur Web de base qui écoute le port défini par la variable d'environnement
PORT
.
Votre application est terminée et prête à être conteneurisée, puis importée dans Container Registry.
Python
Créez un répertoire nommé
helloworld
et modifiez les sous-répertoires comme suit :mkdir helloworld cd helloworld
Créez un fichier nommé
main.py
et collez-y le code suivant :Ce code répond aux requêtes avec notre message d'accueil "Hello World!". Le traitement HTTP est effectué par un serveur Web Gunicorn dans le conteneur. Lorsqu'il est appelé directement en local, ce code crée un serveur Web de base qui écoute le port défini par la variable d'environnement
PORT
.
Votre application est terminée et prête à être conteneurisée, puis importée dans Container Registry.
Java
Créez une application Spring Boot.
À partir de la console, créez un projet Web vide à l'aide des commandes cURL et unzip :
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d javaVersion=1.8 \ -d bootVersion=2.3.3.RELEASE \ -d name=helloworld \ -d artifactId=helloworld \ -d baseDir=helloworld \ -o helloworld.zip unzip helloworld.zip cd helloworld
Un projet Spring Boot est créé.
Pour exécuter la commande cURL ci-dessus sous Micosoft Windows, vous devez utiliser l'une des lignes de commande suivantes ou éventuellement Spring Initializr (configuration préchargée) pour générer le projet :
Mettez à jour la classe
HelloworldApplication
danssrc/main/java/com/example/helloworld/HelloworldApplication.java
en ajoutant une valeur@RestController
pour gérer le mappage/
, et ajoutez également un champ@Value
pour fournir la variable d'environnement NAME :Choisissez le port du serveur à définir par la variable d'environnement PORT dans
application.properties
:
Ce code crée un serveur Web de base qui écoute le port défini par la variable d'environnement PORT
.
Votre application est terminée et prête à être conteneurisée, puis importée dans Container Registry.
Pour déployer Java dans Cloud Run avec d'autres frameworks, consultez les exemples Knative pour Spark et Vert.x.
C#
Installez le SDK .NET Core 3.1. Notez que cela n'est nécessaire que pour créer le projet Web à l'étape suivante. Le fichier Docker, décrit ultérieurement, chargera toutes les dépendances dans le conteneur.
À partir de la console, créez un projet Web vide à l'aide de la commande dotnet :
dotnet new web -o helloworld-csharp
Remplacez le répertoire par
helloworld-csharp
.Mettez à jour la définition
CreateHostBuilder
dansProgram.cs
pour écouter le port défini par la variable d'environnementPORT
:Ce code crée un serveur Web de base qui écoute le port défini par la variable d'environnement
PORT
.Créez un fichier nommé
Startup.cs
et collez-y le code suivant :Ce code répond aux requêtes avec notre message d'accueil "Hello World!".
Votre application est terminée et prête à être conteneurisée, puis importée dans Container Registry.
C++
Créez un répertoire nommé
helloworld-cpp
et modifiez les sous-répertoires comme suit :mkdir helloworld-cpp cd helloworld-cpp
Créez un fichier nommé
CMakeLists.txt
et collez-y le code suivant :Créez un fichier nommé
cloud_run_hello.cpp
et collez-y le code suivant :Ce code crée un serveur Web de base qui écoute le port défini par la variable d'environnement
PORT
.
Votre application est terminée et prête à être conteneurisée, puis importée dans Container Registry.
PHP
Créez un répertoire nommé
helloworld-php
et modifiez les sous-répertoires comme suit :mkdir helloworld-php cd helloworld-php
Créez un fichier nommé
index.php
et collez-y le code suivant :Ce code répond aux requêtes avec notre message d'accueil "Hello World!". Le traitement HTTP est effectué par un serveur Web Apache dans le conteneur.
Votre application est terminée et prête à être conteneurisée, puis importée dans Container Registry.
Ruby
Créez un répertoire nommé
helloworld
et modifiez les sous-répertoires comme suit :mkdir helloworld cd helloworld
Créez un fichier nommé
app.rb
et collez-y le code suivant :Ce code crée un serveur Web de base qui écoute le port défini par la variable d'environnement
PORT
.Créez un fichier nommé
Gemfile
et copiez-y les éléments suivants :Si vous n'avez pas installé Bundler 2.0 ou une version ultérieure, installez Bundler.
Générez un fichier
Gemfile.lock
en exécutant :bundle install
Votre application est terminée et prête à être conteneurisée, puis importée dans Container Registry.
Shell
Créez un répertoire nommé
helloworld-shell
et modifiez les sous-répertoires comme suit :mkdir helloworld-shell cd helloworld-shell
Créez un fichier
script.sh
avec le contenu suivant :Afin d'exécuter ce script shell à chaque requête entrante, cet exemple utilise un petit programme Go qui démarre un serveur Web de base et écoute le port défini par la variable d'environnement
PORT
.Créez un fichier
invoke.go
avec le contenu suivant :
Votre application est terminée et prête à être conteneurisée, puis importée dans Container Registry.
Autres
Cloud Run est compatible avec la plupart des langages. Pour obtenir des exemples simples dans d'autres langages que ceux présentés dans ce tableau, consultez les pages :
Cependant, dans tous ces exemples, ne tenez pas compte des informations sur service.yaml
et Docker Hub, car Cloud Run ne les utilise pas.
Conteneuriser une application et l'importer dans Container Registry
Pour conteneuriser l'exemple d'application, créez un fichier nommé Dockerfile
dans le même répertoire que les fichiers sources, puis copiez le contenu suivant :
Go
Ajoutez un fichier .dockerignore
pour exclure des fichiers de votre image de conteneur.
Node.js
Ajoutez un fichier .dockerignore
pour exclure des fichiers de votre image de conteneur.
Python
Le fichier Dockerfile Python démarre un serveur Web Firicorn, qui écoute le port défini par la variable d'environnement PORT
:
Ajoutez un fichier .dockerignore
pour exclure des fichiers de votre image de conteneur.
Java
Ajoutez un fichier .dockerignore
pour exclure des fichiers de votre image de conteneur.
C#
Pour empêcher l'importation de fichiers générés par des opérations de compilation dotnet
locales dans Cloud Build, ajoutez un fichier .gcloudignore
dans le même répertoire que les fichiers sources de l'exemple d'application :
Si ces lignes se trouvent dans un fichier .gitignore
, vous pouvez passer cette étape car .gitignore
est une source par défaut pour la configuration .gcloudignore
.
Copiez ces lignes dans un fichier .dockerignore
pour les builds de conteneurs locaux en utilisant l'outil de ligne de commande docker
.
C++
Le fichier Dockerfile C++ démarre l'application en écoute sur le port défini par la variable d'environnement PORT
:
PHP
Le fichier Dockerfile PHP démarre un serveur Web Apache qui écoute le port défini par la variable d'environnement PORT
:
Ajoutez un fichier .dockerignore
pour exclure des fichiers de votre image de conteneur.
Ruby
Ajoutez un fichier .dockerignore
pour exclure des fichiers de votre image de conteneur.
Shell
Autres
Cloud Run est compatible avec la plupart des langages. Pour obtenir des exemples de fichiers Docker dans d'autres langages que ceux présentés dans ce tableau, consultez les pages :
Cependant, dans ces exemples, ne tenez pas compte des informations sur service.yaml
et Docker Hub, car Cloud Run ne les utilise pas.
Créez votre image de conteneur à l'aide de Cloud Build. Pour cela, exécutez la commande suivante à partir du répertoire contenant le fichier Docker :
gcloud builds submit --tag gcr.io/PROJECT-ID/helloworld
Où PROJECT-ID correspond à l'ID de votre projet GCP.
Vous pouvez l'obtenir en exécutant gcloud config get-value project
.
Si l'opération réussit, un message "SUCCESS" contenant le nom de l'image (gcr.io/PROJECT-ID/helloworld
) s'affiche. L'image est stockée dans Container Registry et peut être réutilisée si vous le souhaitez.
Déployer sur Cloud Run
Pour déployer l'image de conteneur, procédez comme suit :
Utilisez la commande suivante pour effectuer le déploiement :
gcloud run deploy --image gcr.io/PROJECT-ID/helloworld --platform managed
Remplacez PROJECT-ID par l'ID de votre projet GCP. Vous pouvez afficher votre ID de projet en exécutant la commande
gcloud config get-value project
.- Vous serez invité à saisir le nom du service : appuyez sur Entrée pour accepter le nom par défaut,
helloworld
. - Vous serez invité à indiquer la région : sélectionnez la région de votre choix, par exemple
us-central1
. - Vous serez invité à autoriser les appels non authentifiés : répondez
y
.
Patientez quelques instants jusqu'à la fin du déploiement. En cas de réussite, la ligne de commande affiche l'URL du service.
- Vous serez invité à saisir le nom du service : appuyez sur Entrée pour accepter le nom par défaut,
Accédez à votre conteneur déployé en ouvrant l'URL du service dans un navigateur Web.
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
asia-east1
(Taïwan)asia-northeast1
(Tokyo)asia-northeast2
(Osaka)europe-north1
(Finlande)europe-west1
(Belgique)europe-west4
(Pays-Bas)us-central1
(Iowa)us-east1
(Caroline du Sud)us-east4
(Virginie du Nord)us-west1
(Oregon)
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)australia-southeast1
(Sydney)europe-west2
(Londres, Royaume-Uni)europe-west3
(Francfort, Allemagne)europe-west6
(Zurich, Suisse)northamerica-northeast1
(Montréal)southamerica-east1
(São Paulo, Brésil)
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.
Félicitations ! Vous venez de déployer une application empaquetée dans une image de conteneur sur Cloud Run. Cloud Run effectue un scaling automatique et horizontal de votre image de conteneur pour traiter les requêtes reçues, puis un scaling vertical lorsque la demande diminue. Vous ne payez que pour le processeur, la mémoire et le réseau utilisés lors du traitement des requêtes.
Effectuer un nettoyage
Supprimer votre projet test
Bien que Cloud Run ne facture pas lorsque le service n'est pas utilisé, il se peut que des frais vous soient facturés pour le stockage de l'image de conteneur dans Container Registry. Vous pouvez supprimer votre image ou votre projet Cloud afin d'éviter que des frais ne vous soient facturés. La suppression de votre projet Cloud arrête la facturation de toutes les ressources utilisées dans ce projet.
- Dans Cloud Console, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
Étape suivante
Pour savoir comment créer un conteneur à partir d'un code source et le transférer dans Container Registry, reportez-vous à la page :