Associez Cloud Run à Firebase Hosting pour générer et diffuser votre contenu dynamique ou créer des API REST en tant que microservices.
À l'aide de Cloud Run , vous pouvez déployer une application packagé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 prend en charge plusieurs langages (dont Go, Node.js, Python et Java), vous offrant ainsi la flexibilité d'utiliser le langage et le framework de programmation de votre choix.
- Cloud Run met automatiquement et horizontalement à l'échelle votre image de conteneur pour gérer les demandes reçues, puis la réduit lorsque la demande diminue.
- Vous ne payez que pour le processeur, la mémoire et la mise en réseau consommés lors du traitement des requêtes.
Pour obtenir des exemples de cas d'utilisation et d'exemples pour Cloud Run intégré à Firebase Hosting, consultez notre présentation du serveur sans serveur .
Ce guide vous montre comment :
- Écrire une application Hello World simple
- Conteneuriser une application et la télécharger sur Container Registry
- Déployer l'image du conteneur sur Cloud Run
- Demandes d'hébergement directes vers votre application conteneurisée
Notez que pour améliorer les performances de diffusion du contenu dynamique, vous pouvez éventuellement ajuster vos paramètres de cache .
Avant que tu commences
Avant d'utiliser Cloud Run, vous devez effectuer certaines tâches initiales, notamment la configuration d'un compte Cloud Billing, l'activation de l'API Cloud Run et l'installation de l'outil de ligne de commande gcloud
.
Configurer la facturation de votre projet
Cloud Run offre un quota d'utilisation gratuit , mais vous devez toujours disposer d'un compte de facturation Cloud associé à votre projet Firebase pour utiliser ou essayer Cloud Run.
Activez l'API et installez le SDK
Activez l'API Cloud Run dans la console des API Google :
Ouvrez la page de l'API Cloud Run dans la console des API Google.
Lorsque vous y êtes invité, sélectionnez votre projet Firebase.
Cliquez sur Activer sur la page API Cloud Run.
Installez et initialisez le SDK Cloud.
Vérifiez que l'outil
gcloud
est configuré pour le bon projet :gcloud config list
Étape 1 : Rédiger l'exemple d'application
Notez que Cloud Run prend en charge de nombreuses autres langues en plus des langues présentées dans l'exemple suivant.
Aller
Créez un nouveau répertoire nommé
helloworld-go
, puis modifiez-y le répertoire :mkdir helloworld-go
cd helloworld-go
Créez un nouveau fichier nommé
helloworld.go
, puis ajoutez le code suivant :Ce code crée un serveur Web de base qui écoute sur le port défini par la variable d'environnement
PORT
.
Votre application est terminée et prête à être conteneurisée et téléchargée sur Container Registry.
Noeud.js
Créez un nouveau répertoire nommé
helloworld-nodejs
, puis changez-y de répertoire :mkdir helloworld-nodejs
cd helloworld-nodejs
Créez un fichier
package.json
avec le contenu suivant :Créez un nouveau fichier nommé
index.js
, puis ajoutez le code suivant :Ce code crée un serveur Web de base qui écoute sur le port défini par la variable d'environnement
PORT
.
Votre application est terminée et prête à être conteneurisée et téléchargée sur Container Registry.
Python
Créez un nouveau répertoire nommé
helloworld-python
, puis modifiez-y le répertoire :mkdir helloworld-python
cd helloworld-python
Créez un nouveau fichier nommé
app.py
, puis ajoutez le code suivant :Ce code crée un serveur Web de base qui écoute sur le port défini par la variable d'environnement
PORT
.
Votre application est terminée et prête à être conteneurisée et téléchargée sur Container Registry.
Java
Installez Java SE 8 ou version ultérieure JDK et CURL .
Notez que nous n'avons besoin de faire cela que pour créer le nouveau projet Web à l'étape suivante. Le Dockerfile, décrit plus loin, chargera toutes les dépendances dans le conteneur.
Depuis la console, créez un nouveau projet web vide à l'aide de cURL puis décompressez les commandes :
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Cela crée un projet SpringBoot.
Mettez à jour la classe
SpringBootApplication
danssrc/main/java/com/example/helloworld/HelloworldApplication.java
en ajoutant un@RestController
pour gérer le mappage/
et ajoutez également un champ@Value
pour fournir la variable d'environnementTARGET
:Ce code crée un serveur Web de base qui écoute sur le port défini par la variable d'environnement
PORT
.
Votre application est terminée et prête à être conteneurisée et téléchargée sur Container Registry.
Étape 2 : Conteneuriser une application et la télécharger sur Container Registry
Conteneurisez l’exemple d’application en créant un nouveau fichier nommé
Dockerfile
dans le même répertoire que les fichiers sources. Copiez le contenu suivant dans votre fichier.Aller
Noeud.js
Python
Java
Créez votre image de conteneur à l'aide de Cloud Build en exécutant la commande suivante à partir du répertoire contenant votre fichier Docker :
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
En cas de succès, vous verrez un message SUCCÈS contenant le nom de l'image
(gcr.io/ PROJECT_ID /helloworld
).
L'image du conteneur est désormais stockée dans Container Registry et peut être réutilisée si vous le souhaitez.
Notez qu'au lieu de Cloud Build, vous pouvez utiliser une version installée localement de Docker pour créer votre conteneur localement .
Étape 3 : Déployer l'image du conteneur sur Cloud Run
Déployez à l'aide de la commande suivante :
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
Y
pour autoriser les appels non authentifiés
- Sélectionnez une région (par exemple
Pour de meilleures performances, colocalisez votre service Cloud Run avec l'hébergement en utilisant les régions suivantes :
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
Les réécritures vers Cloud Run à partir de l'hébergement sont prises en charge dans les régions suivantes :
-
asia-east1
-
asia-east2
-
asia-northeast1
-
asia-northeast2
-
asia-northeast3
-
asia-south1
-
asia-south2
-
asia-southeast1
-
asia-southeast2
-
australia-southeast1
-
australia-southeast2
-
europe-central2
-
europe-north1
-
europe-southwest1
-
europe-west1
-
europe-west12
-
europe-west2
-
europe-west3
-
europe-west4
-
europe-west6
-
europe-west8
-
europe-west9
-
me-central1
-
me-west1
-
northamerica-northeast1
-
northamerica-northeast2
-
southamerica-east1
-
southamerica-west1
-
us-central1
-
us-east1
-
us-east4
-
us-east5
-
us-south1
-
us-west1
-
us-west2
-
us-west3
-
us-west4
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
Attendez quelques instants que le déploiement soit terminé. En cas de succès, la ligne de commande affiche l'URL du service. Par exemple
https://helloworld- RANDOM_HASH -us-central1.a.run.appVisitez 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 URL d'hébergement Firebase afin qu'elle puisse générer du contenu dynamique pour votre site hébergé sur Firebase.
Étape 4 : dirigez les demandes 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
sur votre site d'hébergement pour déclencher le démarrage et l'exécution de votre instance de conteneur helloworld
.
Sois sûr que:
Vous disposez de la dernière version de Firebase CLI .
Vous avez initialisé Firebase Hosting.
Pour obtenir des instructions détaillées sur l'installation de la CLI et l'initialisation de l'hébergement, consultez le guide de démarrage pour l'hébergement .
Ouvrez votre fichier
firebase.json
.Ajoutez la configuration
rewrite
suivante 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 depuis la racine du répertoire de votre projet :
firebase deploy --only hosting
Avec cette fonctionnalité, vous pouvez vous assurer que la révision de votre service Cloud Run pour générer le contenu dynamique de votre site reste synchronisée avec vos ressources d'hébergement statiques et votre configuration d'hébergement. En outre, cette fonctionnalité vous permet de prévisualiser vos réécritures sur les canaux de prévisualisation Cloud Run on Hosting.
Si vous ajoutez
"pingTag": true
à un blocrun
de la configurationhosting.rewrites
, vos ressources d'hébergement statiques et votre configuration seront épinglées à la révision la plus récente du service Cloud Run, au moment du déploiement. Si vous restaurez une version de votre site, la révision du service Cloud Run « épinglé » est également restaurée.Cette fonctionnalité s'appuie sur les balises Cloud Run , qui ont une limite de 1 000 balises par service et de 2 000 balises par région. Cela signifie qu'après des centaines de déploiements, les versions les plus anciennes d'un site peuvent cesser de fonctionner.
Votre conteneur est désormais accessible via les URL suivantes :
Vos sous-domaines Firebase :
PROJECT_ID .web.app/
etPROJECT_ID .firebaseapp.com/
Tous les domaines personnalisés connectés :
CUSTOM_DOMAIN /
Visitez la page de configuration de l'hébergement pour plus de détails sur les règles de réécriture . Vous pouvez également en savoir plus sur l' ordre de priorité des réponses pour diverses configurations d'hébergement.
Tester localement
Pendant le développement, vous pouvez exécuter et tester votre image de conteneur localement. Pour des instructions détaillées, consultez la documentation Cloud Run .
Prochaines étapes
Configurez la mise en cache de votre contenu dynamique sur un CDN global.
Interagissez avec d'autres services Firebase à l'aide du SDK d'administration Firebase .
Apprenez-en davantage sur Cloud Run, y compris des guides pratiques détaillés pour l'installation, la gestion et la configuration des conteneurs.
Consultez la tarification , les quotas et les limites de Cloud Run.