为实例配置容器

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

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

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

所需的角色

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

如需查看与 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

  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