Associez Cloud Run à Firebase Hosting pour générer et diffuser votre contenu dynamique ou créer des API REST en tant que microservices.
Avec Cloud Run, vous pouvez déployer une application empaquetée dans une image de conteneur. Ensuite, à l'aide de Firebase Hosting, vous pouvez diriger les requêtes HTTPS pour déclencher votre application conteneurisée.
- Cloud Run est compatible avec plusieurs langages (y compris Go, Node.js, Python et Java), ce qui vous permet d'utiliser le langage de programmation et le framework de votre choix.
- Cloud Run effectue un scaling automatique et horizontal de votre image de conteneur pour traiter les requêtes reçues, puis un scaling à la baisse 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.
Pour obtenir des exemples de cas d'utilisation et des exemples d'intégration de Cloud Run à Firebase Hosting, consultez notre présentation de l'architecture sans serveur.
Ce guide vous explique comment :
- écrire une application Hello World simple ;
- conteneuriser une application et l'importer dans Artifact Registry
- déployer l'image de conteneur dans Cloud Run ;
- diriger Hosting les requêtes d'hébergement vers votre application conteneurisée.
Notez que pour améliorer les performances de diffusion de contenu dynamique, vous pouvez éventuellement ajuster vos paramètres de cache.
Avant de commencer
Avant d'utiliser Cloud Run, vous devez effectuer certaines tâches initiales,
y compris configurer un compte Cloud Billing, activer l'API Cloud Run
et installer l'outil de ligne de commande gcloud.
Configurez la facturation pour votre projet
Cloud Run propose un quota d'utilisation sans frais, mais vous devez tout de même disposer d'un compte Cloud Billing associé à votre projet Firebase pour utiliser ou essayer Cloud Run.
Activer l'API et installer le SDK
Activez l'API Cloud Run dans la console Google APIs :
Ouvrez la Cloud Run page de l'API dans la console Google APIs.
Lorsque vous y êtes invité, sélectionnez votre projet Firebase.
Cliquez sur Activer sur la page de l'API Cloud Run.
Installez et initialisez le Cloud SDK.
Vérifiez que l'outil
gcloudest configuré pour le bon projet :gcloud config list
Étape 1 : Coder l'exemple d'application
Notez que Cloud Run est compatible avec de nombreux autres langages en plus de ceux présentés dans l'exemple suivant.
Go
Créez un répertoire nommé
helloworld-go, puis accédez-y :mkdir helloworld-go
cd helloworld-go
Créez un fichier nommé
helloworld.go, puis ajoutez 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 Artifact Registry.
Node.js
Créez un répertoire nommé
helloworld-nodejs, puis accédez-y :mkdir helloworld-nodejs
cd helloworld-nodejs
Créez un fichier
package.jsonavec le contenu suivant :Créez un fichier nommé
index.js, puis ajoutez 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 Artifact Registry.
Python
Créez un répertoire nommé
helloworld-python, puis accédez-y :mkdir helloworld-python
cd helloworld-python
Créez un fichier nommé
app.py, puis ajoutez 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 Artifact Registry.
Java
Installez Java SE 8 ou une version ultérieure du JDK et CURL.
Notez que nous n'avons à le faire 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 des commandes cURL et unzip :
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zipunzip helloworld.zip
Un projet SpringBoot est créé.
Mettez à jour la classe
SpringBootApplicationdanssrc/main/java/com/example/helloworld/HelloworldApplication.javaen ajoutant un@RestControllerpour gérer le mappage/et un champ@Valuepour fournir la variable d'environnementTARGET: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 Artifact Registry.
Étape 2 : Conteneuriser une application et l'importer dans Artifact Registry
Conteneurisez l'application exemple en créant un fichier nommé
Dockerfiledans le même répertoire que les fichiers sources. Copiez le contenu suivant dans votre fichier.Go
Node.js
Python
Java
Créez votre image de conteneur à l'aide de Cloud Build. Pour cela, exécutez la commande suivante à partir du répertoire contenant votre fichier Docker :
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
En cas de réussite, un message SUCCESS apparaît contenant le nom de l'image
(gcr.io/PROJECT_ID/helloworld).
L'image de conteneur est désormais stockée dans Artifact Registry et peut être réutilisée au besoin si désiré.
Étape 3 : Déployer l'image de conteneur dans Cloud Run
Utilisez la commande suivante pour effectuer le déploiement :
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
Lorsque vous y êtes invité :
- Sélectionnez une région (par exemple,
us-central1). - Confirmez le nom du service (par exemple,
helloworld). - Répondez
Ypour autoriser les appels non authentifiés.
- Sélectionnez une région (par exemple,
Attendez quelques instants que le déploiement se termine. En cas de réussite, la ligne de commande affiche l'URL du service. Par exemple:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Accédez à votre conteneur déployé en ouvrant l'URL du service dans un navigateur Web.
L'étape suivante vous explique comment accéder à cette application conteneurisée à partir d'une Firebase Hosting URL afin qu'elle puisse générer du contenu dynamique pour votre site hébergé sur Firebase.
Étape 4 : Diriger les requêtes d'hébergement vers votre application conteneurisée
Avec les règles de réécriture, vous pouvez diriger les requêtes qui correspondent à des modèles spécifiques vers une seule destination.
L'exemple suivant montre comment diriger toutes les requêtes de la page
/helloworld de votre Hosting site pour déclencher le démarrage et l'exécution de
votre helloworld instance de conteneur.
Vérifiez les points suivants :
Vous disposez de la dernière version de l'interface Firebase CLI.
Vous avez initialisé Firebase Hosting.
Pour obtenir des instructions détaillées sur l'installation de l'interface CLI et l'initialisation Hosting, consultez le guide Premiers pas avec Hosting.
Ouvrez votre
firebase.jsonfichier.Ajoutez la configuration
rewritesuivante sous la sectionhosting:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/helloworld", "run": { "serviceId": "helloworld", // "service name" (from when you deployed the container image) "region": "us-central1", // optional (if omitted, default is us-central1) "pinTag": true // optional (see note below) } } ] }
Déployez votre configuration d'hébergement sur votre site en exécutant la commande suivante à partir de la racine du répertoire de votre projet :
firebase deploy --only hosting
Votre conteneur est désormais accessible via les URL suivantes :
Vos sous-domaines Firebase :
PROJECT_ID.web.app/etPROJECT_ID.firebaseapp.com/
Consultez la page de configuration Hosting pour en savoir plus sur les règles de réécriture. Vous pouvez également en savoir plus sur l' ordre de priorité des réponses pour différentes Hosting configurations.
Tester en local
Pendant le développement, vous pouvez exécuter et tester votre image de conteneur en local. Pour obtenir des instructions détaillées, consultez la Cloud Run documentation.
Étapes suivantes
Configurez la mise en cache de votre contenu dynamique sur un CDN mondial.
Interagissez avec d'autres services Firebase à l'aide du SDK Admin Firebase.
Découvrez Cloud Run, y compris des guides pratiques détaillés pour configurer, gérer et configurer des conteneurs.
Consultez les tarifs, ainsi que les quotas et limites pour Cloud Run.