从同一代码库部署多个环境的情况很常见,每个环境的配置略有不同。例如,您可能希望为预演环境分配较少的 CPU 和 RAM,或者希望确保生产环境至少有 1 个实例保持活跃状态并准备好处理请求。
如需详细了解环境,请参阅环境概览和设置 Firebase 项目的一般最佳实践。
前提条件
- 您的应用代码已存储在 GitHub 中。
- 您已为每个环境创建了不同的项目,例如
my-production-firebase-project
和my-staging-firebase-project
。- 提示:请勿忘记使用“生产”环境类型标记您的 Firebase 生产项目。
第 0 步:设置生产 Git 分支
如果您希望从 main
分支部署生产环境,请跳至下一步。如果您想从其他分支部署生产环境,例如production
,您必须先在 GitHub 上创建它。
如需使用 GitHub 界面创建生产分支,请参阅在代码库中创建和删除分支。
如需在本地创建生产分支,请执行以下操作:
$ git checkout -b production
$ git push origin production:production
第 1 步:配置生产 apphosting.yaml
假设您要确保生产环境中始终有至少 1 台机器在运行,并且包含一些特定于生产环境的环境变量。您可以通过在项目的根目录下创建如下所示的 apphosting.yaml
文件进行配置:
# Saved at <repository root>/apphosting.yaml
runConfig:
minInstances: 1
env:
- variable: STORAGE_BUCKET
value: <production Cloud Storage bucket name>
如需查看受支持设置的完整列表,请参阅配置 App Hosting。
修改 apphosting.yaml
后,将其推送到您的 GitHub 代码库:
$ git add apphosting.yaml
$ git commit -m "Added production App Hosting backend configuration."
$ git push origin
第 2 步:将代码库部署到生产环境
配置生产 Git 分支后,您可以创建新的生产 App Hosting 后端。如需了解详细说明,请参阅 App Hosting 使用入门。
如需使用 Firebase 控制台创建新的后端,请转到 https://console.firebase.google.com/project/_/apphosting 以开始操作。
要在本地创建该文件,您必须先安装 Firebase CLI,然后运行以下命令:
firebase apphosting:backends:create --project <replace with your PRODUCTION project ID>
此命令成功完成后,您的生产后端应该会上线,对生产分支的任何新提交都将由 App Hosting 自动构建和部署。
第 3 步:设置暂存 git 分支
按照与上述步骤相同的步骤,在 GitHub 中创建暂存分支:
$ git checkout -b staging
$ git push origin staging:staging
第 4 步:配置临时 apphosting.yaml
您的预演分支应已包含生产 apphosting.yaml 的副本。我们来修改一下,以便 App Hosting 可以在没有活跃使用的情况下关闭预演环境,并为 STORAGE_BUCKET
环境变量设置不同的值。
# Saved at <repository root>/apphosting.yaml
runConfig:
minInstances: 0
env:
- variable: STORAGE_BUCKET
value: <some other staging Cloud Storage bucket name>
完成修改后,将文件推送到暂存 Git 分支:
$ git add apphosting.yaml
$ git commit -m "Added staging App Hosting backend configuration."
$ git push origin
第 5 步:将代码库部署到预演环境
配置预演 git 分支后,您可以按照上述相同的步骤将代码库部署到预演工作区:
firebase apphosting:backends:create --project <replace with your STAGING project ID>
完成此步骤后,您将拥有两个由同一代码库提供支持的 App Hosting 后端,一个用于生产环境,另一个用于预演项目,它们分别位于不同的 Firebase 项目中。
后续步骤
- 深入了解:演示将托管应用与 Firebase Authentication 和 Google AI 功能集成的 Firebase Codelab:Next.js | Angular
- 关联自定义网域。
- 配置您的后端。
- 监控发布、网站使用情况和日志。