本页面介绍如何为 Cloud Run 实例配置入口点命令和参数。
当 Cloud Run 启动容器时,它会运行映像的默认入口点命令和默认命令参数。如果要替换映像的默认入口点和命令参数,您可以使用容器配置中的 command 和 args 字段。command 字段指定容器运行的实际命令。args 字段指定传递给该命令的参数。
请注意,每个实例的每个容器最多可以有 1000 个参数。
所需的角色
如需获得配置和部署 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 客户端库)进行交互,请参阅 服务身份配置指南。 如需详细了解如何授予角色,请参阅 部署权限 和管理访问权限。
配置入口点和参数
如需替换默认映像 ENTRYPOINT 和 CMD 设置,您可以使用 Google Cloud CLI 或 YAML 为 Cloud Run 实例设置入口点命令和参数:
gcloud
如需更新现有实例的启动命令和参数,请执行以下操作:
gcloud beta run instances update INSTANCE --command COMMAND --args ARG1,ARG-N
替换以下内容:
- INSTANCE:实例的名称。
- COMMAND:启动容器的命令( 如果您未使用默认命令)。
- ARG1:要发送到容器命令的参数。如有多个参数,请使用逗号分隔列表。
如需在新实例或现有实例的 部署期间指定入口点和参数,请执行以下操作:
gcloud beta run instances deploy --image IMAGE_URL --command COMMAND --args ARG1,ARG-N
将 IMAGE_URL 替换为对容器映像的引用,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。
如果您想恢复入口点命令和参数的容器默认值,请提供空字符串,如下所示:
gcloud beta run instances --image IMAGE_URL --command "" --args ""
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: - name: CONTAINER_NAME image: IMAGE_URL command: - COMMAND args: - ARG1 - ARG-N
替换以下内容:
- INSTANCE:Cloud Run 实例的名称。
- CONTAINER_NAME:容器的名称。
IMAGE_URL:对容器映像的引用,例如us-docker.pkg.dev/cloudrun/container/hello:latest。- COMMAND:启动容器的命令(如果您未使用默认命令)。
- ARG1:要发送到容器命令的参数。 如果您使用多个参数,请在各自的行中指定每个参数,例如 ARG-N。
使用以下命令创建或更新实例:
gcloud beta run instances replace instance.yaml
为 sidecar 部署配置容器启动顺序
如需在 边车部署中指定容器启动顺序,请使用 容器依赖项功能。指定任何具有依赖项的容器,并列出它们所依赖的容器,以便这些容器首先启动。没有任何依赖项的容器始终首先并发启动。
如需成功使用此功能,您必须使用启动健康检查探测。启动探测使 Cloud Run 能够检查依赖容器的健康状况,确保其在启动下一个容器之前成功通过。如果不使用健康检查,即使容器依赖的容器无法启动,它们也会按指定的顺序启动。
请注意,实例没有默认的启动健康检查探测。
使用 Google Cloud CLI 或 YAML 指定启动顺序:
gcloud
在使用 Google Cloud CLI 指定启动顺序之前, 请配置启动健康检查。
-
在 Google Cloud 控制台中,激活 Cloud Shell。
Cloud Shell 会话随即会在控制台 Google Cloud 的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。
如需以指定的启动顺序将多个容器部署到实例,请运行以下命令:
gcloud beta run instances deploy INSTANCE \ --container CONTAINER_1_NAME --image='INSTANCE_IMAGE' --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \ --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME,CONTAINER_2_NAME
替换以下内容:
- INSTANCE:实例的名称。
IMAGE_URL:对容器映像的引用,例如us-docker.pkg.dev/cloudrun/container/hello:latest。SIDECAR_IMAGE:对边车容器映像的引用。如果要在部署命令中配置每个容器,请在
container参数后面提供每个容器的配置。
YAML
如果您要创建新实例,请跳过此步骤。 如果您要更新现有实例,请下载其 YAML 配置:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
以下示例包含 YAML 配置:
apiVersion: run.googleapis.com/v1 kind: Instance metadata: name: INSTANCE spec: template: metadata: annotations: run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
替换以下内容:
- INSTANCE:Cloud Run 实例的名称。
- CONTAINER1:第一个 依赖于一个或多个容器的容器的名称。您可以在 YAML 中设置容器名称;如果未指定名称,Cloud Run 会自动生成名称。
- CONTAINER2:必须在 之前启动的容器的名称。CONTAINER1
- CONTAINER3:第二个依赖于一个或多个容器的容器的名称。
在 YAML 代码段中显示的示例中,CONTAINER2 先启动,CONTAINER1 然后启动, CONTAINER3 最后启动。
使用以下命令创建或更新实例:
gcloud beta run instances replace instance.yaml