Accoppia Cloud Run con Firebase Hosting per generare e pubblicare i tuoi contenuti dinamici o per creare API REST come microservizi.
Con Cloud Run puoi eseguire il deployment di un'applicazione pacchettizzata in un'immagine container. Quindi, utilizzando Firebase Hosting, puoi indirizzare le richieste HTTPS in modo che attivino la tua app containerizzata.
- Cloud Run supporta diversi linguaggi (tra cui Go, Node.js, Python e Java), offrendoti la flessibilità di utilizzare il linguaggio di programmazione e il framework che preferisci.
- Cloud Run scala automaticamente e orizzontalmente l'immagine container per gestire le richieste ricevute, quindi fa lo scale down quando la domanda diminuisce.
- Paghi solo per la CPU, la memoria e le risorse di rete utilizzate durante la gestione delle richieste.
Per casi d'uso e esempi di Cloud Run integrati con Firebase Hosting, consulta la nostra panoramica del serverless.
Questa guida illustra come:
- Scrivere una semplice applicazione Hello World
- Containerizza un'app e caricala su Container Registry
- Esegui il deployment dell'immagine container in Cloud Run
- Indirizza le richieste Hosting alla tua app containerizzata
Tieni presente che, per migliorare il rendimento della pubblicazione di contenuti dinamici, puoi optionally ottimizzare le impostazioni della cache.
Prima di iniziare
Prima di utilizzare Cloud Run, devi completare alcune attività iniziali, tra cui la configurazione di un account Cloud Billing, l'attivazione dell'API Cloud Run e l'installazione dello strumento a riga di comando gcloud
.
Configurare la fatturazione per il progetto
Cloud Run offre una quota di utilizzo gratuita, ma devi comunque avere un account Cloud Billing associato al tuo progetto Firebase per utilizzare o provare Cloud Run.
Attiva l'API e installa l'SDK
Abilita l'API Cloud Run nella console API di Google:
Apri la pagina dell'API Cloud Run nella console API di Google.
Quando richiesto, seleziona il progetto Firebase.
Fai clic su Abilita nella pagina dell'API Cloud Run.
Installa e inizializza Cloud SDK.
Verifica che lo strumento
gcloud
sia configurato per il progetto corretto:gcloud config list
Passaggio 1: scrivi l'applicazione di esempio
Tieni presente che Cloud Run supporta molte altre lingue oltre a quelle mostrate nell'esempio seguente.
Vai
Crea una nuova directory denominata
helloworld-go
, quindi modificala:mkdir helloworld-go
cd helloworld-go
Crea un nuovo file denominato
helloworld.go
e aggiungi il seguente codice:Questo codice crea un server web di base in ascolto sulla porta definita dalla variabile di ambiente
PORT
.
La tua app è ora completa e pronta per essere containerizzata e caricata su Container Registry.
Node.js
Crea una nuova directory denominata
helloworld-nodejs
, quindi cambia directory:mkdir helloworld-nodejs
cd helloworld-nodejs
Crea un file
package.json
con i seguenti contenuti:Crea un nuovo file denominato
index.js
e aggiungi il seguente codice:Questo codice crea un server web di base in ascolto sulla porta definita dalla variabile di ambiente
PORT
.
La tua app è ora completa e pronta per essere containerizzata e caricata su Container Registry.
Python
Crea una nuova directory denominata
helloworld-python
, quindi cambia directory:mkdir helloworld-python
cd helloworld-python
Crea un nuovo file denominato
app.py
e aggiungi il seguente codice:Questo codice crea un server web di base in ascolto sulla porta definita dalla variabile di ambiente
PORT
.
La tua app è ora completa e pronta per essere containerizzata e caricata su Container Registry.
Java
Installa JDK Java SE 8 o versioni successive e CURL.
Tieni presente che lo faremo solo per creare il nuovo progetto web nel passaggio successivo. Il file Dockerfile, descritto di seguito, caricherà tutte le dipendenze nel container.
Dalla console, crea un nuovo progetto web vuoto utilizzando i comandi cURL e unzip:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Viene creato un progetto SpringBoot.
Aggiorna la classe
SpringBootApplication
insrc/main/java/com/example/helloworld/HelloworldApplication.java
aggiungendo un@RestController
per gestire la mappatura/
e anche un@Value
campo per fornire la variabile di ambienteTARGET
:Questo codice crea un server web di base in ascolto sulla porta definita dalla variabile di ambiente
PORT
.
La tua app è completa e pronta per essere containerizzata e caricata su Container Registry.
Passaggio 2: esegui il containerizzazione di un'app e caricala su Container Registry
Containerizza l'app di esempio creando un nuovo file denominato
Dockerfile
nella stessa directory dei file di origine. Copia i seguenti contenuti nel file.Vai
Node.js
Python
Java
Crea l'immagine container utilizzando Cloud Build eseguendo il seguente comando dalla directory contenente il file Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
In caso di esito positivo, viene visualizzato un messaggio di successo contenente il nome dell'immagine
(gcr.io/PROJECT_ID/helloworld
).
L'immagine del contenitore è ora archiviata in Container Registry e può essere riutilizzata se lo desideri.
Tieni presente che, anziché Cloud Build, puoi utilizzare una versione di Docker installata localmente per creare il container localmente.
Passaggio 3: esegui il deployment dell'immagine container in Cloud Run
Esegui il deployment utilizzando il seguente comando:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
Quando richiesto:
- Seleziona una regione (ad esempio
us-central1
) - Conferma il nome del servizio (ad esempio
helloworld
) - Rispondi
Y
per consentire chiamate non autenticate
- Seleziona una regione (ad esempio
Per ottenere il massimo rendimento, esegui la colocazione del servizio Cloud Run con Hosting utilizzando le seguenti regioni:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Le riscritture in Cloud Run da Hosting sono supportate nelle seguenti regioni:
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
Attendi qualche istante per il completamento del deployment. Se l'operazione riesce, la riga di comando mostra l'URL del servizio. Ad esempio:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Visita il container di cui hai eseguito il deployment aprendo l'URL del servizio in un browser web.
Il passaggio successivo illustra come accedere a questa app containerizzata da un URLFirebase Hosting in modo che possa generare contenuti dinamici per il tuo sito ospitato su Firebase.
Passaggio 4: indirizza le richieste di hosting all'app containerizzata
Con le regole di riscrittura, puoi indirizzare le richieste che corrispondono a pattern specifici a una singola destinazione.
L'esempio seguente mostra come indirizzare tutte le richieste dalla pagina
/helloworld
sul tuo sito Hosting per attivare l'avvio e l'esecuzione della
tua istanza del contenitore helloworld
.
Verifica quanto segue:
Hai inizializzato Firebase Hosting.
Per istruzioni dettagliate sull'installazione della CLI e sull'inizializzazione di Hosting, consulta la guida introduttiva per Hosting.
Apri il file
firebase.json
.Aggiungi la seguente configurazione
rewrite
nella sezionehosting
:"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) } } ] }
Esegui il deployment della configurazione di hosting sul tuo sito eseguendo il seguente comando dalla radice della directory del progetto:
firebase deploy --only hosting
Il container ora è raggiungibile tramite i seguenti URL:
I tuoi sottodomini Firebase:
PROJECT_ID.web.app/
ePROJECT_ID.firebaseapp.com/
Eventuali domini personalizzati collegati:
CUSTOM_DOMAIN/
Visita la pagina di configurazione di Hosting per maggiori dettagli sulle regole di riscrittura. Puoi anche scoprire l'ordine di priorità delle risposte per varie configurazioni di Hosting.
Esegui test in locale
Durante lo sviluppo, puoi eseguire e testare l'immagine container localmente. Per istruzioni dettagliate, consulta la documentazione di Cloud Run.
Passaggi successivi
Configura la memorizzazione nella cache dei tuoi contenuti dinamici su una CDN globale.
Interagire con altri servizi Firebase utilizzando l'SDK Admin Firebase.
Scopri di più su Cloud Run, incluse guide dettagliate per la configurazione, la gestione e la configurazione dei contenitori.
Esamina i prezzi e le quote e i limiti per Cloud Run.