Abbina Cloud Run a Firebase Hosting per generare e pubblicare i tuoi contenuti dinamici o creare API REST come microservizi.
Con Cloud Run puoi eseguire il deployment di un'applicazione pacchettizzata in un'immagine container. Poi, utilizzando Firebase Hosting, puoi indirizzare le richieste HTTPS per attivare l'app containerizzata.
- Cloud Run supporta diverse lingue (tra cui Go, Node.js, Python e Java), offrendoti la flessibilità di utilizzare il linguaggio di programmazione e il framework di tua scelta.
- 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 esempi di casi d'uso e campioni di Cloud Run integrato con Firebase Hosting, visita la nostra panoramica serverless.
Questa guida ti mostra come:
- Scrivere una semplice applicazione Hello World
- Containerizzare un'app e caricarla in Artifact Registry
- Eseguire il deployment dell'immagine container su Cloud Run
- Indirizzare Hosting le richieste di Hosting all'app containerizzata
Tieni presente che, per migliorare le prestazioni della pubblicazione di contenuti dinamici, puoi facoltativamente 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'abilitazione dell'API Cloud Run
e l'installazione dello strumento a riga di comando gcloud.
Configura la fatturazione per il tuo progetto
Cloud Run offre una quota di utilizzo senza costi, ma devi comunque avere un Cloud Billing account associato al tuo progetto Firebase per utilizzare o provare Cloud Run.
Abilita l'API e installa l'SDK
Abilita l'API Cloud Run nella console API di Google:
Apri la Cloud Run pagina dell'API nella console API di Google.
Quando richiesto, seleziona il tuo progetto Firebase.
Fai clic su Abilita nella pagina dell'API Cloud Run.
Installa e inizializza Cloud SDK.
Verifica che lo strumento
gcloudsia 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 passa alla directory:mkdir helloworld-go
cd helloworld-go
Crea un nuovo file denominato
helloworld.go, quindi 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 è completa e pronta per essere containerizzata e caricata in Artifact Registry.
Node.js
Crea una nuova directory denominata
helloworld-nodejs, quindi passa alla directory:mkdir helloworld-nodejs
cd helloworld-nodejs
Crea un file
package.jsoncon i seguenti contenuti:Crea un nuovo file denominato
index.js, quindi 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 è completa e pronta per essere containerizzata e caricata in Artifact Registry.
Python
Crea una nuova directory denominata
helloworld-python, quindi passa alla directory:mkdir helloworld-python
cd helloworld-python
Crea un nuovo file denominato
app.py, quindi 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 è completa e pronta per essere containerizzata e caricata in Artifact Registry.
Java
Installa Java SE 8 o versioni successive di JDK e CURL.
Tieni presente che dobbiamo eseguire questa operazione solo per creare il nuovo progetto web nel passaggio successivo. Il Dockerfile, descritto in un secondo momento, 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.zipunzip helloworld.zip
Viene creato un progetto SpringBoot.
Aggiorna la
SpringBootApplicationclasse insrc/main/java/com/example/helloworld/HelloworldApplication.javaaggiungendo un@RestControllerper gestire il mapping/e un@Valuecampo 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 in Artifact Registry.
Passaggio 2: containerizza un'app e caricala in Artifact Registry
Containerizza l'app di esempio creando un nuovo file denominato
Dockerfilenella 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 Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Se l'operazione riesce, vedrai una notifica di operazione riuscita contenente il nome dell'immagine
(gcr.io/PROJECT_ID/helloworld).
L'immagine container è ora archiviata in Artifact Registry e, se lo desideri, può essere riutilizzata.
Passaggio 3: esegui il deployment dell'immagine container su Cloud Run
Esegui il deployment utilizzando il comando seguente:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
Quando richiesto:
- Seleziona una regione (ad es.
us-central1) - Conferma il nome del servizio (ad es.
helloworld) - Rispondi
Yper consentire chiamate non autenticate
- Seleziona una regione (ad es.
Attendi qualche istante fino al completamento del deployment. Se l'operazione riesce, la riga di comando visualizza 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 ti illustra come accedere a questa app containerizzata da un Firebase Hosting URL in modo che possa generare contenuti dinamici per il tuo sito ospitato da 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 del tuo sito Hosting per attivare l'avvio e l'esecuzione di
della tua istanza container helloworld.
Verifica quanto segue:
Hai inizializzato Firebase Hosting.
Per istruzioni dettagliate sull'installazione della CLI e sull'inizializzazione Hosting, consulta la guida introduttiva per Hosting.
Apri il tuo
firebase.jsonfile.Aggiungi la seguente configurazione
rewritenella 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 comando seguente dalla directory principale della directory del progetto:
firebase deploy --only hosting
Ora puoi raggiungere il container tramite i seguenti URL:
I tuoi sottodomini Firebase:
PROJECT_ID.web.app/ePROJECT_ID.firebaseapp.com/
Per ulteriori dettagli sulle regole di riscrittura, visita la pagina di configurazione Hosting per . Puoi anche scoprire di più sull' ordine di priorità delle risposte per varie Hosting configurazioni.
Test in locale
Durante lo sviluppo, puoi eseguire e testare l'immagine container in locale. Per istruzioni dettagliate, consulta la Cloud Run documentazione.
Passaggi successivi
Configura la memorizzazione nella cache dei contenuti dinamici su una CDN globale.
Interagisci con altri servizi Firebase utilizzando l 'SDK Firebase Admin.
Scopri di più su Cloud Run, incluse guide dettagliate su come configurare, gestire e configurare i container.
Esamina i prezzi e le quote e i limiti per Cloud Run.