从相同的代码库部署多个环境的情况很常见, 只是配置略有不同例如,您可能想将 为预演环境减少 CPU 和 RAM 生产环境让至少 1 个实例保持活跃状态并已准备好提供服务 请求。您可能还需要指定不同的环境变量和 Secret,具体取决于您要使用的环境和资源。
本指南介绍如何将生产环境和预演环境分别部署到 一个单独的 Firebase 项目遵循相同的原则, 不同类型的环境如需详细了解环境 请参阅概述 环境和常规 设置 Firebase 的最佳做法 项目。
前提条件
- 您的应用代码已存储在 GitHub 中。
- 您已经为自己的每个资源
环境(例如
my-production-firebase-project
和my-staging-firebase-project
。请务必为您的正式版 Firebase 添加代码 “production”的环境 type。 - 在每个项目中,您都创建了一个 App Hosting 后端,其中包含
分支,设置为您要部署的 GitHub 分支(例如
main
)。请参阅 开始使用 App Hosting 了解详情 信息。
第 0 步:在 apphosting.yaml 中创建默认配置
App Hosting 支持一个名为 apphosting.yaml
的配置文件来管理
运行时设置(CPU、并发、内存限制等)和环境
变量。它还支持引用通过
Cloud Secret Manager,让您可以安全地签入源代码控制。有关
请参阅配置
后端。
首先,请在应用的根目录中创建一个 apphosting.yaml
文件。
这是一个后备配置文件
找不到特定于环境的配置文件。存储在
apphosting.yaml
应该是可在所有环境中安全使用的默认值。
后续部分介绍了如何替换 apphosting.yaml
中的默认值
特定环境此示例流程会创建一个预演环境。
第 1 步:设置环境名称
每个 App Hosting 后端都有一个环境名称设置。此字段为 用于将后端映射到特定于环境的配置文件,并且可以 可以随时更改您只能为每个后端设置一个环境名称。
如需设置后端的环境名称,请执行以下操作:
- 在 Firebase 控制台中,选择您的预演项目(在此示例中为 my-staging-firebase-project)。
- 从左侧导航栏中选择 App Hosting。
- 点击所选后端上的查看信息中心。
- 在设置标签页中,选择部署。
- 在环境名称下,输入环境的名称。您可以命名 自己喜欢的任何环境在本例中,我们将选择 staging。
- 点击保存。
当后端触发 App Hosting 发布时(在 Git 上)
推送或手动通过控制台进行),App Hosting 将检查是否有
提前 apphosting.ENVIRONMENT_NAME.yaml
个文件
回退到 apphosting.yaml
。
第 2 步:创建特定于环境的 apphosting.yaml
文件
对于特定于环境的配置,请创建名为
apphosting.ENVIRONMENT_NAME.yaml
,即可
指定特定于环境的替换值。此文件的格式与
默认的 apphosting.yaml,并且必须位于
应用的根目录以及 apphosting.yaml
。
在构建时,App Hosting 会合并这两个文件,并将优先级设为
通过基本 apphosting.yaml
指定环境专用 YAML 文件中的值
文件。
在此示例中,您将在apphosting.staging.yaml
应用的根目录:
runConfig:
cpu: 1
memoryMiB: 512
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
假设您已经有一个如下所示的 apphosting.yaml
:
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.appspot.com
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
最终合并的输出(您可以在 Cloud Build 日志中查看) 如下所示:
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.appspot.com
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
请注意,某些 runConfig
值(例如 CPU)也已被覆盖
与任何重叠的环境变量相同
第 3 步:部署代码库
修改完环境专用 apphosting.ENVIRONMENT_NAME.yaml
文件后,将您的文件推送到 GitHub:
$ git add apphosting.<ENVIRONMENT_NAME>.yaml
$ git commit -m "Added environment specific yaml file"
$ git push
使用此环境名称标记的所有后端都将使用特定替换项
您在相应的 YAML 文件中指定的值,然后再回退到
如果未找到值,则返回 apphosting.yaml
。对于没有关联
环境名称,则可以继续使用 apphosting.yaml。
后续步骤
- 深入学习:通过 Firebase Codelab 逐步了解将托管应用与 Firebase Authentication 和 Google AI 功能: Next.js | Angular
- 关联自定义网域。
- 配置您的后端。
- 监控发布、网站使用情况和日志。