Cloud Run 上的 NextJS 持续部署不起作用

问题描述 投票:0回答:1

我正在尝试将 github 上的默认 next js 应用程序自动部署到 Google Cloud Run 上,但它陷入了构建和部署步骤: Depploying Revision

我尝试过使用 docker 镜像和默认的 Nodejs 存储库。

不知道如何解决这个问题。

这是我在 Cloud Build 中看到的错误: 您的构建无法运行: generic::invalid_argument: 如果指定了 'build.service_account',则构建必须 (a) 指定 'build.logs_bucket',(b) 使用 REGIONAL_USER_OWNED_BUCKET build.options.default_logs_bucket_behavior 选项,或者 (c )使用 CLOUD_LOGGING_ONLY / NONE 日志记录选项

我已尝试将存储桶的 IAM 权限授予 Cloud Build & Run

next.js gcloud
1个回答
0
投票

这个问题的答案取决于所使用的构建类型; cloudbuild.yaml 或 Dockerfile。

cloudbuild.yaml

  1. 确认所使用的服务帐户具有 IAM 和管理员的“日志写入者”权限(或包括日志写入的更高权限)。

  2. 在 cloudbuild.yaml 中设置

    options.logging
    属性。 官方文档包含完整的选项列表,但最常见的是
    CLOUD_LOGGING_ONLY
    。您可以将此属性添加到文件末尾:

options:
  logging: CLOUD_LOGGING_ONLY

Dockerfile

  1. 编辑 Cloud Run 服务并选择“设置持续部署”。如果仅显示“编辑持续部署”,请删除现有触发器。

  2. 选择存储库并将构建类型设置为 Dockerfile。该服务将在保存后尝试构建。如果构建失败,请继续执行后续步骤。

  3. 仍然在 Cloud Run 服务中,选择“编辑持续部署”。首先,确认所使用的服务帐户具有 IAM 和 Admin 的“日志写入者”权限(或包括日志写入的更高权限权限)。其次,将配置构建类型设置为 Dockerfile 并保存。

  4. 重新运行构建触发器以查看其是否有效。

在撰写本文时,您必须使用现有 Cloud Run 服务中针对 Dockerfile 构建类型的“设置持续部署”选项。如果您使用指定的服务帐户从 Cloud Build Triggers 创建新触发器,您将收到相同的

invalid_argument
错误,即使配置看起来相同。为什么这是必要的?诚实的答案是我不知道。我相信从 Cloud Build Triggers 创建触发器会将
options.logging
设置为
LEGACY
或不指定它,而从“设置持续部署”创建触发器将其设置为
CLOUD_LOGGING_ONLY
,但这在前端不可见云构建。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.