Häufig werden mehrere Umgebungen aus derselben Codebasis bereitgestellt, die jeweils eine leicht unterschiedliche Konfiguration haben. Beispielsweise können Sie Ihrer Staging-Umgebung weniger CPU und RAM zuweisen oder dafür sorgen, dass in Ihrer Produktionsumgebung mindestens eine Instanz aktiv bleibt und bereit ist, Anfragen zu verarbeiten. Je nach Umgebung und Ressourcen, die Sie verwenden möchten, müssen Sie möglicherweise auch andere Umgebungsvariablen und Secrets angeben.
In dieser Anleitung wird beschrieben, wie Sie eine Produktions- und eine Staging-Umgebung in jeweils einem separaten Firebase-Projekt bereitstellen. Nach denselben Prinzipien können Sie auch in anderen Arten von Umgebungen bereitstellen. Weitere Informationen zu Umgebungen finden Sie unter Übersicht über Umgebungen und Allgemeine Best Practices für die Einrichtung von Firebase-Projekten.
Vorbereitung
- Ihr Anwendungscode ist bereits in GitHub gespeichert.
- Sie haben bereits ein separates Projekt für jede Ihrer Umgebungen erstellt, z. B.
my-production-firebase-project
undmy-staging-firebase-project
. Taggen Sie Ihr Firebase-Produktionsprojekt mit dem Umgebungstyp „production“. - In jedem Projekt haben Sie ein App Hosting-Backend erstellt. Der Live-Branch ist auf den GitHub-Branch festgelegt, den Sie bereitstellen möchten, z. B.
main
. Weitere Informationen finden Sie unter Erste Schritte mit App Hosting.
Schritt 0: Standardkonfiguration in apphosting.yaml erstellen
App Hosting unterstützt eine Konfigurationsdatei namens apphosting.yaml
, mit der Sie Laufzeiteinstellungen (CPU, Parallelität, Arbeitsspeicherlimits usw.) und Umgebungsvariablen für Ihre App verwalten können. Sie unterstützt auch Verweise auf Secrets, die mit Cloud Secret Manager verwaltet werden, sodass sie sicher in die Quellcodeverwaltung eingecheckt werden kann. Weitere Informationen finden Sie unter Backend konfigurieren.
Erstellen Sie zuerst eine Datei mit dem Namen apphosting.yaml
im Stammverzeichnis Ihrer App.
Dies ist die Fallback-Konfigurationsdatei, die verwendet wird, wenn keine umgebungsspezifische Konfigurationsdatei gefunden wird. Die in apphosting.yaml
gespeicherten Werte sollten Standardwerte sein, die für alle Umgebungen sicher verwendet werden können.
In den nächsten Abschnitten wird erläutert, wie Sie Standardwerte in apphosting.yaml
für bestimmte Umgebungen überschreiben. In diesem Beispiel-Ablauf wird eine Staging-Umgebung erstellt.
Schritt 1: Umgebungsname festlegen
Jedes App Hosting-Backend hat eine Einstellung für den Umgebungsnamen. Mit diesem Feld wird Ihr Backend einer umgebungsspezifischen Konfigurationsdatei zugeordnet. Es kann jederzeit geändert werden. Sie können nur einen Umgebungsnamen pro Backend festlegen.
So legen Sie den Umgebungsnamen Ihres Back-Ends fest:
- Wählen Sie in der Firebase Console Ihr Staging-Projekt aus (in diesem Beispiel „my-staging-firebase-project“).
- Wählen Sie im linken Navigationsbereich App Hosting aus.
- Klicken Sie im ausgewählten Backend auf Dashboard ansehen.
- Wählen Sie auf dem Tab Einstellungen die Option Umgebung aus.
- Geben Sie unter Umgebungsname den Namen Ihrer Umgebung ein. Sie können die Umgebung beliebig benennen. In diesem Beispiel ist es staging.
- Klicken Sie auf Speichern.
Wenn ein App Hosting-Rollout für Ihr Backend ausgelöst wird (entweder per „git push“ oder manuell über die Konsole), sucht App Hosting nach einer apphosting.ENVIRONMENT_NAME.yaml
-Datei, bevor auf apphosting.yaml
zurückgegriffen wird.
Schritt 2: Umgebungsspezifische apphosting.yaml
-Datei erstellen
Erstellen Sie für Ihre umgebungsspezifische Konfiguration eine Datei mit dem Namen apphosting.ENVIRONMENT_NAME.yaml
, um umgebungsspezifische Überschreibungen anzugeben. Diese Datei hat dasselbe Format wie die Standarddatei apphosting.yaml und muss sich im Stammverzeichnis Ihrer App neben apphosting.yaml
befinden.
Zur Build-Zeit führt App Hosting diese beiden Dateien zusammen. Dabei haben Werte in der umgebungsspezifischen YAML-Datei Vorrang vor der Basisdatei apphosting.yaml
.
In diesem Beispiel erstellen Sie eine Datei mit dem Namen apphosting.staging.yaml
im Stammverzeichnis der App:
runConfig:
cpu: 1
memoryMiB: 512
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
Angenommen, Sie hatten bereits ein apphosting.yaml
, das so aussah:
runConfig:
cpu: 3
memoryMiB: 1024
maxInstances: 4
minInstances: 0
concurrency: 100
env:
- variable: API_URL
value: api.service.com
availability:
- BUILD
- RUNTIME
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
Die endgültige zusammengeführte Ausgabe, die Sie in Ihren Cloud Build-Logs ansehen können, sieht so aus:
runConfig:
cpu: 1
memoryMiB: 512
maxInstances: 4
minInstances: 0
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
Beachten Sie, dass bestimmte runConfig
-Werte wie CPU sowie alle sich überschneidenden Umgebungsvariablen überschrieben wurden.
Schritt 3: Codebasis bereitstellen
Wenn Sie die Bearbeitung der umgebungsspezifischen Datei apphosting.ENVIRONMENT_NAME.yaml
abgeschlossen haben, übertragen Sie die Datei an GitHub:
$ git add apphosting.<ENVIRONMENT_NAME>.yaml
$ git commit -m "Added environment specific yaml file"
$ git push
Für alle Back-Ends, die mit diesem Umgebungsnamen getaggt sind, werden die spezifischen Überschreibungswerte verwendet, die Sie in der entsprechenden YAML-Datei angegeben haben. Wenn ein Wert nicht gefunden wird, wird auf apphosting.yaml
zurückgegriffen. Für Back-Ends ohne zugehörigen Umgebungsnamen können Sie weiterhin apphosting.yaml verwenden.
Nächste Schritte
- Weitere Informationen finden Sie in einem Firebase-Codelab, in dem eine gehostete App in Firebase Authentication und Google AI-Funktionen eingebunden wird: Next.js | Angular
- Benutzerdefinierte Domain verbinden
- Backend konfigurieren
- Rollouts, Websitenutzung und Logs im Blick behalten: