本页面介绍了如何为 Cloud Run 实例配置环境变量。
所需的角色
如需获得配置和部署 Cloud Run 实例所需的权限,请让您的管理员为您授予以下 IAM 角色:
- Cloud Run 实例的 Cloud Run Developer (
roles/run.developer) 角色 - 服务身份的 Service Account User (
roles/iam.serviceAccountUser) 角色
如需查看与 Cloud Run 关联的 IAM 角色和权限的列表,请参阅 Cloud Run IAM 角色和 Cloud Run IAM 权限。如果您的 Cloud Run 实例与Google Cloud API(例如 Cloud 客户端库)进行交互,请参阅服务身份配置指南。如需详细了解如何授予角色,请参阅部署权限和管理访问权限。
设置环境变量
您可以使用 Google Cloud CLI 或 YAML 为 Cloud Run 实例设置环境变量:
gcloud
如需在创建实例时指定环境变量,请使用 --set-env-vars 标志:
gcloud beta run instances create INSTANCE --image IMAGE_URL --set-env-vars KEY1=VALUE1,KEY2=VALUE2
替换以下内容:
- INSTANCE:实例的名称
IMAGE_URL:对容器映像的引用,例如us-docker.pkg.dev/cloudrun/container/hello:latest。- KEY1=VALUE1,KEY2=VALUE2:以英文逗号分隔的变量名称和值列表
如需详细了解如何设置多个环境变量或转义特殊字符,请参阅设置多个环境变量。
YAML
如果您要创建新实例,请跳过此步骤。如果您要更新现有实例,请下载其 YAML 配置:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
以下示例包含 YAML 配置:
apiVersion: run.googleapis.com/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - env: - name: KEY value: VALUE - name: KEY2 value: VALUE2 image: IMAGE
替换以下内容:
- INSTANCE:Cloud Run 实例的名称。
- KEY 和 VALUE:环境变量的名称和值。
IMAGE_URL:对容器映像的引用,例如us-docker.pkg.dev/cloudrun/container/hello:latest。
使用以下命令创建或更新实例:
gcloud beta run instances replace instance.yaml
在容器中设置默认环境变量
您可以使用 Dockerfile 中的 ENV 语句设置环境变量的默认值:
ENV KEY1=VALUE1,KEY2=VALUE2
优先顺序:容器变量与实例变量
如果您在容器中设置默认环境变量,并在 Cloud Run 实例上设置具有相同名称的环境变量,则该实例上设置的值优先。
设置多个环境变量
您可以使用 .env 文件或 --set-env-vars 标志设置多个环境变量。
使用 .env 文件设置多个环境变量
gcloud
如需通过 .env 文件指定多个环境变量,请运行以下命令:
gcloud beta run instances create INSTANCE --image IMAGE_URL --env-vars-file=ENV_FILE_PATH
替换以下内容:
- INSTANCE:实例的名称。
IMAGE_URL:对容器映像的引用,例如us-docker.pkg.dev/cloudrun/container/hello:latest。- ENV_FILE_PATH:
.env文件的路径。
使用 --set-env-vars 标志设置多个环境变量
如果您有多个无法以 KEY1=VALUE1,KEY2=VALUE2 格式列出的环境变量,则可以多次重复使用 --set-env-vars 标志:
[...] --set-env-vars "KEY1=VALUE1" \ --set-env-vars "KEY2=VALUE2" \ --set-env-vars "KEY3=VALUE3"
转义英文逗号字符
由于英文逗号字符, 用于分隔环境变量,因此,如果您的环境变量包含英文逗号字符作为值,则您需要将这些分隔符进行转义,方法是指定其他分隔符(例如 @):
--set-env-vars "^@^KEY1=value1,value2,value3@KEY2=..."
更新环境变量
您可以更新现有实例的运行时环境变量。这种方法没有破坏性,也就是说,它只会更改或添加运行时环境变量,但不会删除这些变量。
您可以使用 Google Cloud CLI 或 YAML 更新环境变量:
gcloud
如需更新现有实例的环境变量,请使用 --update-env-vars 标志:
gcloud beta run instances update INSTANCE --update-env-vars KEY1=VALUE1,KEY2=VALUE2
替换以下内容:
- INSTANCE:实例的名称
- KEY1=VALUE1,KEY2=VALUE2:以英文逗号分隔的变量名称和值列表
YAML
下载实例 YAML 配置:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
修改键(名称)和值变量。
使用以下命令更新实例:
gcloud beta run instances replace instance.yaml
删除环境变量
gcloud
如需从现有实例中有选择地移除环境变量,请使用 --remove-env-vars 标志:
gcloud beta run instances update INSTANCE --remove-env-vars KEY1,KEY2
替换以下内容:
- INSTANCE:实例的名称
- KEY1,KEY2:以英文逗号分隔的变量名称列表
或者,您也可以使用 --clear-env-vars 标志清除所有先前设置的环境变量:
gcloud beta run instances update INSTANCE --clear-env-vars
将 INSTANCE 替换为您的实例名称。
示例代码
如需查看展示如何访问代码中的环境变量的代码示例,请参阅最终用户身份验证教程中的使用 Secret Manager 处理敏感配置。
后续步骤
您可以使用环境变量来设置 buildpack 配置。如需了解特定语言的详细信息,请参阅适用于以下语言的 Buildpack 文档: