Kombinieren Sie Cloud Run mit Firebase Hosting, um dynamische Inhalte zu generieren und bereitzustellen oder REST APIs als Mikrodienste zu erstellen.
Mit Cloud Run können Sie eine in einem Container-Image verpackte Anwendung bereitstellen. Anschließend können Sie mit Firebase Hosting HTTPS-Anfragen steuern, um Ihre containerisierte Anwendung auszulösen.
- Cloud Run unterstützt verschiedene Sprachen, darunter Go, Node.js, Python und Java. Sie können also die Programmiersprache und das Framework Ihrer Wahl verwenden.
- Cloud Run skaliert das Container-Image automatisch horizontal, damit die empfangenen Anfragen bearbeitet werden können, und skaliert es dann wieder herunter, wenn der Bedarf sinkt.
- Sie zahlen nur für die CPU-, Arbeitsspeicher- und Netzwerkressourcen, die während der Anfrageverarbeitung verbraucht werden.
Beispiele für Anwendungsfälle und Beispiele für Cloud Run, die in Firebase Hosting eingebunden sind, finden Sie in unserer Übersicht über serverlose Funktionen.
In diesem Leitfaden erfahren Sie, wie Sie:
- Eine einfache Hello World-Anwendung schreiben
- Anwendung containerisieren und in Container Registry hochladen
- Stellen Sie das Container-Image für Cloud Run bereit
- Hosting-Anfragen an Ihre containerisierte App weiterleiten
Zur Verbesserung der Leistung der Bereitstellung dynamischer Inhalte können Sie optional Ihre Cache-Einstellungen anpassen.
Hinweis
Bevor Sie Cloud Run verwenden können, müssen Sie einige grundlegende Aufgaben erledigen, z. B. ein Cloud Billing-Konto einrichten, die Cloud Run API aktivieren und das gcloud
-Befehlszeilentool installieren.
Abrechnung für Ihr Projekt einrichten
Cloud Run bietet ein kostenloses Nutzungskontingent. Sie benötigen jedoch ein Cloud Billing-Konto, das mit Ihrem Firebase-Projekt verknüpft ist, um Cloud Run verwenden oder testen zu können.
API aktivieren und SDK installieren
Aktivieren Sie die Cloud Run API in der Google APIs-Konsole:
Öffnen Sie in der Google APIs Console die Seite Cloud Run API.
Wählen Sie Ihr Firebase-Projekt aus, wenn Sie dazu aufgefordert werden.
Klicken Sie auf der Seite der Cloud Run API auf Aktivieren.
Prüfen Sie, ob das
gcloud
-Tool für das richtige Projekt konfiguriert ist:gcloud config list
Schritt 1: Beispielanwendung schreiben
Cloud Run unterstützt neben den im folgenden Beispiel aufgeführten Sprachen noch viele weitere.
Go
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld-go
und ersetzen Sie das aktuelle Verzeichnis durch dieses Verzeichnis:mkdir helloworld-go
cd helloworld-go
Erstellen Sie eine neue Datei mit dem Namen
helloworld.go
und fügen Sie den folgenden Code hinzu:Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable
PORT
definierten Port überwacht.
Die Anwendung ist jetzt fertig und kann in einen Container verlagert und dann in Container Registry hochgeladen werden.
Node.js
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld-nodejs
und wechseln Sie dann in dieses 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 den folgenden Code hinzu:Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable
PORT
definierten Port überwacht.
Die Anwendung ist jetzt fertig und kann in einen Container verlagert und dann in Container Registry hochgeladen werden.
Python
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld-python
und wechseln Sie dann zu diesem Verzeichnis:mkdir helloworld-python
cd helloworld-python
Erstellen Sie eine neue Datei mit dem Namen
app.py
und fügen Sie den folgenden Code hinzu:Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable
PORT
definierten Port überwacht.
Die Anwendung ist jetzt fertig und kann in einen Container verlagert und dann in Container Registry hochgeladen werden.
Java
Installieren Sie das Java SE Development Kit Version 8 oder höher und CURL.
Dies ist nur erforderlich, um das neue Webprojekt im nächsten Schritt zu erstellen. Das weiter unten beschriebene Dockerfile lädt dann später alle Abhängigkeiten in den Container.
Erstellen Sie über die Konsole mit den Befehlen „cURL“ und „unzip“ ein neues, leeres Webprojekt:
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 Klasse
SpringBootApplication
insrc/main/java/com/example/helloworld/HelloworldApplication.java
. Fügen Sie dazu einen@RestController
ein, um die/
-Zuordnung zu verarbeiten. Fügen Sie außerdem ein@Value
-Feld hinzu, um die UmgebungsvariableTARGET
bereitzustellen:Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable
PORT
definierten Port überwacht.
Die Anwendung ist jetzt fertig und kann in einen Container verlagert und dann in Container Registry hochgeladen werden.
Schritt 2: Anwendung containerisieren und in Container Registry hochladen
Containerisieren Sie die Beispielanwendung. Erstellen Sie dazu eine neue Datei mit dem Namen
Dockerfile
im selben Verzeichnis wie die Quelldateien. Kopieren Sie den folgenden Inhalt in die Datei.Go
Node.js
Python
Java
Erstellen Sie das Container-Image mit Cloud Build. Dazu führen Sie folgenden Befehl in dem Verzeichnis aus, in dem sich das Dockerfile befindet:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Bei Erfolg wird eine SUCCESS-Nachricht mit dem Image-Namen
(gcr.io/PROJECT_ID/helloworld
) angezeigt.
Das Container-Image wird jetzt in Container Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Anstelle von Cloud Build können Sie eine lokal installierte Version von Docker verwenden, um den Container lokal zu erstellen.
Schritt 3: Container-Image auf Cloud Run bereitstellen
Stellen Sie es mit dem folgenden Befehl bereit:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
Tun Sie Folgendes, wenn Sie dazu aufgefordert werden:
- Wählen Sie eine Region aus (z. B.
us-central1
). - Bestätigen Sie den Dienstnamen (z. B.
helloworld
). - Antworten Sie mit
Y
auf Nicht authentifizierte Aufrufe zulassen.
- Wählen Sie eine Region aus (z. B.
Für eine optimale Leistung sollten Sie Ihren Cloud Run-Dienst mit Hosting in den folgenden Regionen platzieren:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Weiterleitungen von Hosting zu Cloud Run 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 wird in der Befehlszeile die Dienst-URL angezeigt. Beispiel:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Rufen Sie den bereitgestellten Container auf. Dazu öffnen Sie in einem Webbrowser die Dienst-URL.
Im nächsten Schritt erfahren Sie, wie Sie über eine Firebase Hosting-URL auf diese containerisierte App zugreifen, damit dynamische Inhalte für Ihre von Firebase gehostete Website generiert werden können.
Schritt 4: Hostinganfragen an Ihre containerisierte Anwendung weiterleiten
Mit Umschreibregeln können Sie Anfragen, die bestimmten Mustern entsprechen, an ein einzelnes Ziel weiterleiten.
Im folgenden Beispiel wird gezeigt, wie Sie alle Anfragen von der Seite /helloworld
auf Ihrer Hosting-Website weiterleiten, um das Starten und Ausführen Ihrer helloworld
-Containerinstanz auszulösen.
Sie müssen Folgendes sicherstellen:
Sie haben die neueste Version der Firebase-Befehlszeile.
Sie haben Firebase Hosting initialisiert.
Eine ausführliche Anleitung zum Installieren der Befehlszeile und zum Initialisieren von Hosting finden Sie im Einstiegsleitfaden für Hosting.
Öffnen Sie die Datei
firebase.json
.Fügen Sie die folgende
rewrite
-Konfiguration im Abschnitthosting
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) } } ] }
Führen Sie im Stammverzeichnis Ihres Projektverzeichnisses den folgenden Befehl aus, um die Hostingkonfiguration auf Ihrer Website bereitzustellen:
firebase deploy --only hosting
Ihr Container ist jetzt über die folgenden URLs erreichbar:
Ihre Firebase-Subdomains:
PROJECT_ID.web.app/
undPROJECT_ID.firebaseapp.com/
Alle verbundenen benutzerdefinierten Domains:
CUSTOM_DOMAIN/
Auf der Konfigurationsseite Hosting finden Sie weitere Informationen zu Umschreiberegeln. Außerdem erfahren Sie mehr über die Prioritätsreihenfolge der Antworten für verschiedene Hosting-Konfigurationen.
Lokal testen
Während der Entwicklung können Sie das Container-Image lokal ausführen und testen. Eine ausführliche Anleitung finden Sie in der Dokumentation zu Cloud Run.
Nächste Schritte
Richten Sie das Caching Ihrer dynamischen Inhalte in einem globalen CDN ein.
Über das Firebase Admin SDK mit anderen Firebase-Diensten interagieren
Weitere Informationen zu Cloud Run, einschließlich detaillierter Anleitungen zum Einrichten, Verwalten und Konfigurieren von Containern.
Sehen Sie sich die Preise sowie die Kontingente und Limits für Cloud Run an.