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 weiterleiten, um Ihre Containeranwendung auszulösen.
- Cloud Run unterstützt mehrere Sprachen (darunter Go, Node.js, Python und Java). So können Sie 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 wieder herunter, wenn der Bedarf sinkt.
- Es fallen nur Kosten für die CPU-, Arbeitsspeicher- und Netzwerkressourcen an, die während der Anfrageverarbeitung verbraucht werden.
Beispiele für Anwendungsfälle und Beispiele für Cloud Run, das in Firebase Hosting eingebunden ist, finden Sie in unserer Übersicht über serverlose Dienste.
Diese Seite enthält Anleitungen für Folgendes:
- Einfache „Hello World“-Anwendung schreiben
- Anwendung containerisieren und in Artifact Registry hochladen
- Container-Image in Cloud Run bereitstellen
- Hosting-Anfragen an Ihre containerisierte Anwendung weiterleiten
Sie können optional die Cache-Einstellungen anpassen, um die Leistung bei der Bereitstellung dynamischer Inhalte zu verbessern.
Hinweis
Bevor Sie Cloud Run verwenden können, müssen Sie einige erste Aufgaben ausführen, 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, aber Sie benötigen trotzdem ein Cloud Billing-Konto, das mit Ihrem Firebase-Projekt verknüpft ist, um Cloud Run zu verwenden oder auszuprobieren.
API aktivieren und SDK installieren
Aktivieren Sie die Cloud Run API in der Google APIs Console:
Öffnen Sie in der Google API Console die Cloud Run API-Seite.
Wählen Sie bei entsprechender Aufforderung Ihr Firebase-Projekt aus.
Klicken Sie auf der Seite der Cloud Run API auf Aktivieren.
Installieren und initialisieren Sie das Cloud SDK.
Prüfen Sie, ob das
gcloud-Tool für das richtige Projekt konfiguriert ist:gcloud config list
Schritt 1: Beispielanwendung schreiben
Beachten Sie, dass Cloud Run zusätzlich zu den im folgenden Beispiel gezeigten Sprachen viele andere Sprachen unterstützt.
Go
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld-gound wechseln Sie dann in dieses Verzeichnis:mkdir helloworld-go
cd helloworld-go
- Erstellen Sie eine neue Datei mit dem Namen
helloworld.gound fügen Sie den folgenden Code hinzu:
Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable
PORTdefinierten Port überwacht.- Erstellen Sie eine neue Datei mit dem Namen
Die Anwendung ist jetzt fertig und kann containerisiert und dann in Artifact Registry hochgeladen werden.
Node.js
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld-nodejsund wechseln Sie 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.jsund fügen Sie den folgenden Code hinzu:Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable
PORTdefinierten Port überwacht.
Die Anwendung ist jetzt fertig und kann containerisiert und dann in Artifact Registry hochgeladen werden.
Python
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld-pythonund wechseln Sie in dieses Verzeichnis:mkdir helloworld-python
cd helloworld-python
Erstellen Sie eine neue Datei mit dem Namen
app.pyund fügen Sie den folgenden Code hinzu:Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable
PORTdefinierten Port überwacht.
Die Anwendung ist jetzt fertig und kann containerisiert und dann in Artifact Registry hochgeladen werden.
Java
Installieren Sie Java SE 8 oder ein höheres JDK und CURL.
Beachten Sie, dass wir dies nur tun müssen, um im nächsten Schritt das neue Webprojekt zu erstellen. Das weiter unten beschriebene Dockerfile lädt alle Abhängigkeiten in den Container.
Erstellen Sie über die Konsole mit dem Befehl „cURL“ ein neues, leeres Webprojekt und entpacken Sie es dann mit dem Befehl „unzip“:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zipunzip helloworld.zip
Dadurch wird ein SpringBoot-Projekt erstellt.
Aktualisieren Sie die Klasse
SpringBootApplicationinsrc/main/java/com/example/helloworld/HelloworldApplication.java. Fügen Sie dazu einen@RestControllerein, um die/-Zuordnung zu verarbeiten. Fügen Sie außerdem ein@Value-Feld hinzu, um die UmgebungsvariableTARGETbereitzustellen:Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable
PORTdefinierten Port überwacht.
Die Anwendung ist jetzt fertig und kann containerisiert und dann in Artifact Registry hochgeladen werden.
Schritt 2: App containerisieren und in Artifact Registry hochladen
Containerisieren Sie die Beispiel-App, indem Sie im selben Verzeichnis wie die Quelldateien eine neue Datei mit dem Namen
Dockerfileerstellen. Kopieren Sie den folgenden Inhalt in Ihre Datei.Go
Node.js
Python
Java
Erstellen Sie das Container-Image mit Cloud Build. Führen Sie dazu den folgenden Befehl in dem Verzeichnis aus, in dem sich die Dockerfile-Datei befindet:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Bei Erfolg wird eine SUCCESS-Meldung mit dem Image-Namen
(gcr.io/PROJECT_ID/helloworld) angezeigt.
Das Container-Image wird jetzt in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden.
Anstelle von Cloud Build können Sie eine lokal installierte Version von Docker verwenden, um Ihren Container lokal zu erstellen.
Schritt 3: Container-Image in 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
Yauf Nicht authentifizierte Aufrufe zulassen.
- Wählen Sie eine Region aus (z. B.
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 Anwendung zugreifen, damit sie dynamische Inhalte für Ihre von Firebase gehostete Website generieren kann.
Schritt 4: Hosting-Anfragen an Ihre containerisierte Anwendung weiterleiten
Mit Überschreibungsregeln 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 so weiterleiten, dass das Starten und Ausführen Ihrer helloworld-Containerinstanz ausgelöst wird.
Sie müssen Folgendes sicherstellen:
Sie haben die aktuelle Version der Firebase-Befehlszeile.
Sie haben Firebase Hosting initialisiert.
Eine ausführliche Anleitung zur Installation der Befehlszeile und zur Initialisierung von Hosting finden Sie im Startleitfaden für Hosting.
Öffnen Sie die
firebase.json-Datei.Fügen Sie im Abschnitt
hostingdie 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 die Hosting-Konfiguration auf Ihrer Website bereit, indem Sie den folgenden Befehl im Stammverzeichnis Ihres Projektverzeichnisses ausführen:
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/
Weitere Informationen zu Überschreibungsregeln finden Sie auf der Hosting-Konfigurationsseite unter Überschreibungsregeln. Sie können sich auch über die Prioritätsreihenfolge von Antworten für verschiedene Hosting-Konfigurationen informieren.
Lokal testen
Während der Entwicklung haben Sie die Möglichkeit, das Container-Image lokal auszuführen und zu 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.
Interagieren Sie mit anderen Firebase-Diensten über das Firebase Admin SDK.
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.