为实例配置容器

本页面介绍如何为 Cloud Run 实例配置入口点命令和参数。

当 Cloud Run 启动容器时,它会运行映像的默认入口点命令和默认命令参数。如果要替换映像的默认入口点和命令参数,您可以使用容器配置中的 commandargs 字段。command 字段指定容器运行的实际命令。args 字段指定传递给该命令的参数。

请注意,每个实例的每个容器最多可以有 1000 个参数。

所需的角色

如需获得配置和部署 Cloud Run 实例所需的权限,请让您的管理员为您授予以下 IAM 角色:

如需查看与 Cloud Run 关联的 IAM 角色和权限的列表,请参阅 Cloud Run IAM 角色Cloud Run IAM 权限。 如果您的 Cloud Run 实例与 Google Cloud API(例如 Cloud 客户端库)进行交互,请参阅 服务身份配置指南。 如需详细了解如何授予角色,请参阅 部署权限管理访问权限

配置入口点和参数

如需替换默认映像 ENTRYPOINTCMD 设置,您可以使用 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

  1. 如果您要创建新实例,请跳过此步骤。 如果您要更新现有实例,请下载其 YAML 配置

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 以下示例包含 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
  3. 使用以下命令创建或更新实例:

    gcloud beta run instances replace instance.yaml

为 sidecar 部署配置容器启动顺序

如需在 边车部署中指定容器启动顺序,请使用 容器依赖项功能。指定任何具有依赖项的容器,并列出它们所依赖的容器,以便这些容器首先启动。没有任何依赖项的容器始终首先并发启动。

如需成功使用此功能,您必须使用启动健康检查探测。启动探测使 Cloud Run 能够检查依赖容器的健康状况,确保其在启动下一个容器之前成功通过。如果不使用健康检查,即使容器依赖的容器无法启动,它们也会按指定的顺序启动。

请注意,实例没有默认的启动健康检查探测。

使用 Google Cloud CLI 或 YAML 指定启动顺序:

gcloud

在使用 Google Cloud CLI 指定启动顺序之前, 请配置启动健康检查

  1. 在 Google Cloud 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在控制台 Google Cloud 的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。

  2. 如需以指定的启动顺序将多个容器部署到实例,请运行以下命令:

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

  1. 如果您要创建新实例,请跳过此步骤。 如果您要更新现有实例,请下载其 YAML 配置

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 以下示例包含 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 最后启动。

  3. 使用以下命令创建或更新实例:

    gcloud beta run instances replace instance.yaml