Kombinieren Sie Cloud Run mit Firebase Hosting, um Ihre dynamischen Inhalte zu generieren und bereitzustellen oder REST-APIs als Microservices zu erstellen.
Mit Cloud Run können Sie eine in einem Container-Image verpackte Anwendung bereitstellen. Mithilfe von Firebase Hosting können Sie dann HTTPS-Anfragen leiten, um Ihre Container-App auszulösen.
- Cloud Run unterstützt mehrere Sprachen (einschließlich Go, Node.js, Python und Java) und gibt Ihnen so die Flexibilität, die Programmiersprache und das Framework Ihrer Wahl zu verwenden.
- Cloud Run skaliert Ihr Container-Image automatisch und horizontal, um die empfangenen Anforderungen zu verarbeiten, und verkleinert es dann, wenn die Nachfrage sinkt.
- Sie zahlen nur für die CPU, den Arbeitsspeicher und die Netzwerkleistung, die während der Anforderungsbearbeitung verbraucht werden.
Beispiel-Anwendungsfälle und Beispiele für Cloud Run, integriert mit Firebase Hosting, finden Sie in unserer serverlosen Übersicht .
Dieser Leitfaden zeigt Ihnen, wie Sie:
- Schreiben Sie eine einfache Hello World-Anwendung
- Containerisieren Sie eine App und laden Sie sie in Container Registry hoch
- Stellen Sie das Container-Image in Cloud Run bereit
- Direkte Hosting-Anfragen an Ihre Container-App
Beachten Sie, dass Sie zur Verbesserung der Leistung bei der Bereitstellung dynamischer Inhalte optional Ihre Cache-Einstellungen optimieren können.
Bevor Sie beginnen
Bevor Sie Cloud Run verwenden, müssen Sie einige anfängliche Aufgaben erledigen, darunter das Einrichten eines Cloud-Rechnungskontos, das Aktivieren der Cloud Run-API und die Installation des gcloud
Befehlszeilentools.
Richten Sie die Abrechnung für Ihr Projekt ein
Cloud Run bietet ein kostenloses Nutzungskontingent , Sie müssen jedoch dennoch über ein mit Ihrem Firebase-Projekt verknüpftes Cloud-Rechnungskonto verfügen, um Cloud Run nutzen oder ausprobieren zu können.
Aktivieren Sie die API und installieren Sie das SDK
Aktivieren Sie die Cloud Run API in der Google APIs-Konsole:
Öffnen Sie die Cloud Run API-Seite in der Google APIs-Konsole.
Wenn Sie dazu aufgefordert werden, wählen Sie Ihr Firebase-Projekt aus.
Klicken Sie auf der Cloud Run-API-Seite auf Aktivieren .
Installieren und initialisieren Sie das Cloud SDK.
Überprüfen Sie, ob das
gcloud
Tool für das richtige Projekt konfiguriert ist:gcloud config list
Schritt 1 : Schreiben Sie die Musteranwendung
Beachten Sie, dass Cloud Run zusätzlich zu den im folgenden Beispiel gezeigten Sprachen viele weitere Sprachen unterstützt.
Gehen
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld-go
und wechseln Sie dann in das Verzeichnis:mkdir helloworld-go
cd helloworld-go
Erstellen Sie eine neue Datei mit dem Namen
helloworld.go
und fügen Sie dann den folgenden Code hinzu:Dieser Code erstellt einen einfachen Webserver, der den durch die Umgebungsvariable
PORT
definierten Port überwacht.
Ihre App ist fertig und kann in Containern verpackt und in Container Registry hochgeladen werden.
Node.js
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld-nodejs
und wechseln Sie dann in das Verzeichnis:mkdir helloworld-nodejs
cd helloworld-nodejs
Erstellen Sie eine
package.json
Datei mit folgendem Inhalt:Erstellen Sie eine neue Datei mit dem Namen
index.js
und fügen Sie dann den folgenden Code hinzu:Dieser Code erstellt einen einfachen Webserver, der den durch die Umgebungsvariable
PORT
definierten Port überwacht.
Ihre App ist fertig und kann in Containern verpackt und in Container Registry hochgeladen werden.
Python
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld-python
und wechseln Sie dann in das Verzeichnis:mkdir helloworld-python
cd helloworld-python
Erstellen Sie eine neue Datei mit dem Namen
app.py
und fügen Sie dann den folgenden Code hinzu:Dieser Code erstellt einen einfachen Webserver, der den durch die Umgebungsvariable
PORT
definierten Port überwacht.
Ihre App ist fertig und kann in Containern verpackt und in Container Registry hochgeladen werden.
Java
Installieren Sie Java SE 8 oder höher, JDK und CURL .
Beachten Sie, dass wir dies nur tun müssen, um im nächsten Schritt das neue Webprojekt zu erstellen. Die später beschriebene Docker-Datei lädt alle Abhängigkeiten in den Container.
Erstellen Sie in der Konsole mit cURL ein neues leeres Webprojekt und entpacken Sie dann die Befehle:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Dadurch wird ein SpringBoot-Projekt erstellt.
Aktualisieren Sie die
SpringBootApplication
Klasse insrc/main/java/com/example/helloworld/HelloworldApplication.java
indem Sie einen@RestController
hinzufügen, um die/
-Zuordnung zu verarbeiten, und außerdem ein@Value
Feld hinzufügen, um die UmgebungsvariableTARGET
bereitzustellen:Dieser Code erstellt einen einfachen Webserver, der den durch die Umgebungsvariable
PORT
definierten Port überwacht.
Ihre App ist fertig und kann in Containern verpackt und in Container Registry hochgeladen werden.
Schritt 2 : Containerisieren Sie eine App und laden Sie sie in Container Registry hoch
Containerisieren Sie die Beispiel-App, indem Sie eine neue Datei mit dem Namen
Dockerfile
im selben Verzeichnis wie die Quelldateien erstellen. Kopieren Sie den folgenden Inhalt in Ihre Datei.Gehen
Node.js
Python
Java
Erstellen Sie Ihr Container-Image mit Cloud Build, indem Sie den folgenden Befehl aus dem Verzeichnis ausführen, das Ihre Docker-Datei enthält:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Bei Erfolg wird eine ERFOLGREICH-Meldung mit dem Bildnamen angezeigt
(gcr.io/ PROJECT_ID /helloworld
).
Das Container-Image wird nun in Container Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Beachten Sie, dass Sie anstelle von Cloud Build eine lokal installierte Version von Docker verwenden können, um Ihren Container lokal zu erstellen .
Schritt 3 : Stellen Sie das Container-Image in Cloud Run bereit
Stellen Sie es mit dem folgenden Befehl bereit:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
Wenn Sie dazu aufgefordert werden:
- Wählen Sie eine Region aus (zum Beispiel
us-central1
) - Bestätigen Sie den Dienstnamen (z. B.
helloworld
). - Antworten Sie
Y
, um nicht authentifizierte Aufrufe zuzulassen
- Wählen Sie eine Region aus (zum Beispiel
Um die beste Leistung zu erzielen, platzieren Sie Ihren Cloud Run-Dienst mit Hosting in den folgenden Regionen:
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
Umschreibungen in Cloud Run vom Hosting werden in den folgenden Regionen unterstützt:
-
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
Warten Sie einen Moment, bis die Bereitstellung abgeschlossen ist. Bei Erfolg zeigt die Befehlszeile die Dienst-URL an. Zum Beispiel:
https://helloworld- RANDOM_HASH -us-central1.a.run.appBesuchen Sie Ihren bereitgestellten Container, indem Sie die Dienst-URL in einem Webbrowser öffnen.
Im nächsten Schritt erfahren Sie, wie Sie über eine Firebase-Hosting-URL auf diese Container-App zugreifen, damit sie dynamische Inhalte für Ihre von Firebase gehostete Website generieren kann.
Schritt 4: Leiten Sie Hosting-Anfragen an Ihre Container-App weiter
Mit Rewrite-Regeln können Sie Anfragen, die bestimmten Mustern entsprechen, an ein einzelnes Ziel weiterleiten.
Das folgende Beispiel zeigt, wie Sie alle Anfragen von der Seite /helloworld
auf Ihrer Hosting-Site weiterleiten, um den Start und die Ausführung Ihrer helloworld
Containerinstanz auszulösen.
Stelle sicher das:
Sie haben die neueste Version der Firebase-CLI .
Sie haben Firebase Hosting initialisiert.
Ausführliche Anweisungen zur Installation der CLI und zur Initialisierung des Hostings finden Sie im Leitfaden „Erste Schritte“ für Hosting .
Öffnen Sie Ihre
firebase.json
-Datei .Fügen Sie im Abschnitt
hosting
die folgenderewrite
Konfiguration hinzu:"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) } } ] }
Stellen Sie Ihre Hosting-Konfiguration auf Ihrer Site bereit, indem Sie den folgenden Befehl im Stammverzeichnis Ihres Projektverzeichnisses ausführen:
firebase deploy --only hosting
Mit dieser Funktion können Sie sicherstellen, dass die Revision Ihres Cloud Run-Dienstes zum Generieren des dynamischen Inhalts Ihrer Website mit Ihren statischen Hosting-Ressourcen und Ihrer Hosting-Konfiguration synchronisiert bleibt. Außerdem können Sie mit dieser Funktion eine Vorschau Ihrer Neufassungen in den Vorschaukanälen von Cloud Run auf Hosting anzeigen.
Wenn Sie
"pingTag": true
zu einemrun
derhosting.rewrites
Konfiguration hinzufügen, werden Ihre statischen Hosting-Ressourcen und Ihre Konfiguration zum Zeitpunkt der Bereitstellung an die aktuellste Revision des Cloud Run-Dienstes angeheftet. Wenn Sie eine Version Ihrer Site zurücksetzen, wird auch die Revision des „angehefteten“ Cloud Run-Dienstes zurückgesetzt.Diese Funktion basiert auf Cloud Run-Tags , für die ein Limit von 1.000 Tags pro Dienst und 2.000 Tags pro Region gilt. Das bedeutet, dass nach Hunderten von Bereitstellungen die ältesten Versionen einer Site möglicherweise nicht mehr funktionieren.
Ihr Container ist nun über die folgenden URLs erreichbar:
Ihre Firebase-Subdomains:
PROJECT_ID .web.app/
undPROJECT_ID .firebaseapp.com/
Alle verbundenen benutzerdefinierten Domänen :
CUSTOM_DOMAIN /
Besuchen Sie die Hosting-Konfigurationsseite für weitere Details zu Rewrite-Regeln . Sie können sich auch über die Prioritätsreihenfolge der Antworten für verschiedene Hosting-Konfigurationen informieren.
Testen Sie vor Ort
Während der Entwicklung können Sie Ihr Container-Image lokal ausführen und testen. Ausführliche Anweisungen finden Sie in der Cloud Run-Dokumentation .
Nächste Schritte
Richten Sie das Caching Ihrer dynamischen Inhalte auf einem globalen CDN ein .
Interagieren Sie mit anderen Firebase-Diensten über das Firebase Admin SDK .
Erfahren Sie mehr über Cloud Run, einschließlich detaillierter Anleitungen zum Einrichten, Verwalten und Konfigurieren von Containern.
Überprüfen Sie die Preise sowie die Kontingente und Limits für Cloud Run.