Wenn Sie Cloud Run mit Firebase Hosting koppeln, werden Ihre oder REST APIs als Mikrodienste erstellen.
Mit Cloud Run können Sie Eine in einem Container-Image verpackte Anwendung bereitstellen Dann verwenden Sie Firebase Hosting, Sie können HTTPS-Anfragen weiterleiten, um Ihre containerisiert.
- Cloud Run unterstützt mehrere Sprachen (einschließlich Go, Node.js, Python und Java), sodass Sie die Möglichkeit haben, Programmiersprache und Framework Ihrer Wahl.
- 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:
- Einfache Hello World-Anwendung schreiben
- App containerisieren und in Container Registry hochladen
- Stellen Sie das Container-Image in Cloud Run bereit
- Hosting-Anfragen an Ihre Containeranwendung weiterleiten
Sie können die Leistung bei der Bereitstellung von dynamischem Content verbessern, indem Sie können Sie optional Ihre Cache-Einstellungen anpassen.
Hinweis
Bevor Sie Cloud Run verwenden können, müssen Sie einige Schritte ausführen:
Einrichtung eines Cloud Billing-Kontos, Aktivieren der Cloud Run
API und Installation des gcloud
-Befehlszeilentools
Abrechnung für Ihr Projekt einrichten
Cloud Run bietet ein kostenloses Nutzungskontingent, aber Sie müssen eine Cloud Billing-Konto die mit Ihrem Firebase-Projekt verknüpft sind, oder probieren Sie Cloud Run aus.
Google CloudAPI aktivieren und SDK installieren
Aktivieren Sie die Cloud Run API in der Google APIs Console:
Ö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 API-Seite Cloud Run auf Aktivieren.
Installieren und initialisieren Sie die Cloud SDK
Prüfen Sie, ob das
gcloud
-Tool für das richtige Projekt konfiguriert ist:gcloud config list
Schritt 1: Beispielanwendung schreiben
Hinweis: Cloud Run unterstützt viele weitere Sprachen zusätzlich zu den im folgenden Beispiel gezeigten Sprachen.
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.
Ihre Anwendung ist fertig und kann in einen Container verlagert und hochgeladen werden: Container Registry
Node.js
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld-nodejs
und wechseln Sie dann das Verzeichnis einfügen: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.
Ihre Anwendung ist fertig und kann in einen Container verlagert und hochgeladen werden: Container Registry
Python
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld-python
und wechseln Sie dann das Verzeichnis einfügen: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.
Ihre Anwendung ist fertig und kann in einen Container verlagert und hochgeladen werden: Container Registry
Java
Installieren Sie das Java SE Development Kit Version 8 oder höher und CURL.
Dieser Schritt ist nur erforderlich, um das neue Webprojekt im nächsten Schritt. Das weiter unten beschriebene Dockerfile wird alle Abhängigkeiten in den Container.
Erstellen Sie in der Console ein neues, leeres Webprojekt mit cURL und Entpacken Sie die folgenden 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 Spring Boot-Projekt erstellt.
SpringBootApplication
-Kurs aktualisieren insrc/main/java/com/example/helloworld/HelloworldApplication.java
von Hinzufügen eines@RestController
zur Verarbeitung der/
-Zuordnung und Hinzufügen eines@Value
, um die UmgebungsvariableTARGET
bereitzustellen:Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable
PORT
definierten Port überwacht.
Ihre Anwendung ist fertig und kann in einen Container verlagert und hochgeladen werden: Container Registry
Schritt 2: Anwendung containerisieren und in Container Registry hochladen
Containerisieren Sie die Beispielanwendung, indem Sie im selben Verzeichnis wie die Quelldateien eine neue Datei mit dem Namen
Dockerfile
erstellen. 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-Meldung mit dem Image-Namen angezeigt
. (gcr.io/PROJECT_ID/helloworld
).
Das Container-Image wird jetzt in Container Registry gespeichert und kann wiederverwendet werden, wenn erwünscht ist.
Anstelle von Cloud Build können Sie eine lokal installierte Version von Docker verwenden, um den Container lokal zu erstellen.
Schritt 3: Container-Image für 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:
- Region auswählen (z. B.
us-central1
) - Bestätigen Sie den Dienstnamen (z. B.
helloworld
). - Mit
Y
antworten, um nicht authentifizierte Aufrufe zuzulassen
- Region auswählen (z. B.
Die beste Leistung erzielen Sie, wenn Sie den Cloud Run-Dienst mit Hosting kennzeichnen. Verwenden Sie dazu die folgenden Regionen:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Überschreibungen von Hosting in Cloud Run werden unterstützt im folgenden Regionen:
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. Im Erfolgsfall wird die Befehlszeile wird 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 verwenden, damit dynamische Inhalte für Ihre Von Firebase gehostete Website.
Schritt 4: Hostinganfragen an Containeranwendung weiterleiten
Mit Umschreibregeln können Sie Anfragen, die bestimmten Mustern entsprechen, an ein einzelnes Ziel weiterleiten.
Das folgende Beispiel zeigt, wie alle Anfragen von der Seite weitergeleitet werden
/helloworld
auf Ihrer Hosting-Website, um den Start und die Ausführung von
Ihre helloworld
-Containerinstanz.
Sie müssen Folgendes sicherstellen:
Sie haben die Möglichkeit, neueste Version der Firebase-Befehlszeile.
Sie haben Firebase Hosting initialisiert.
Ausführliche Anweisungen zum Installieren der Befehlszeile und zum Initialisieren Hosting, siehe Startleitfaden 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) } } ] }
Stellen Sie die Hostingkonfiguration auf Ihrer Website bereit, indem Sie den folgenden Befehl ausführen: -Befehl aus dem Stammverzeichnis Ihres Projektverzeichnisses:
firebase deploy --only hosting
Der 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/
Besuchen Sie die Hosting-Konfigurationsseite für Weitere Informationen zu Umschreibungsregeln Sie können erfahren Sie auch mehr über die Prioritätsreihenfolge von Antworten für verschiedene Hosting-Konfigurationen.
Lokal testen
Während der Entwicklung können Sie das Container-Image lokal ausführen und testen. Für erhalten Sie auf der Dokumentation zu Cloud Run
Nächste Schritte
Richten Sie das Caching Ihrer dynamischen Inhalte auf einem globalen CDN.
Interagieren Sie über die Firebase Admin SDK
Weitere Informationen zu Cloud Run, einschließlich detaillierte Anleitungen für wie Sie Container einrichten, verwalten und konfigurieren.
Überprüfen Sie die Preise und die Kontingente und Limits für Cloud Run