You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Cloud Run部署时cloudbuild.yaml构建步骤失败求助

问题描述

首次使用Google Cloud部署带有WebSocket的Node.js程序时,遇到构建错误:

ERROR: build step 0 "gcr.io/cloud-builders/docker" failed: step exited with non-zero status: 1

采用Google Cloud Run官方文档提供的默认cloudbuild.yaml,该文件与Dockerfile一同置于项目根目录,且Dockerfile在本地运行完全正常,参考同类问题未找到适配方案,寻求帮助。

配置文件内容

cloudbuild.yaml

steps:
  # Docker Build
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'us-central1-docker.pkg.dev/game-gossip-409604/gamegossip-server/gamegossip', '--network=cloudbuild', '.']

  # Docker Push
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'us-central1-docker.pkg.dev/game-gossip-409604/gamegossip-server/gamegossip', '--network=cloudbuild']

  # Entrypoint, timeout and environment variables
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    entrypoint: 'gcloud'
    timeout: 240s
    args: ['compute', 'instances', 
           'create-with-container', 'my-vm-name',
           '--container-image', 
           'us-central1-docker.pkg.dev/game-gossip-409604/gamegossip-server/gamegossip']
    env:
      - 'CLOUDSDK_COMPUTE_REGION=us-central1'
      - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'

Dockerfile

ARG NODE_VERSION=20.10.0

FROM node:${NODE_VERSION}-alpine

ENV NODE_ENV production

WORKDIR /usr/src/app

RUN --mount=type=bind,source=package.json,target=package.json \
    --mount=type=bind,source=package-lock.json,target=package-lock.json \
    --mount=type=cache,target=/root/.npm \
    npm ci --omit=dev

USER node

COPY . .

EXPOSE 8080

CMD node server.js
排查与解决方案
  • 查看完整构建日志
    当前错误仅提示步骤0失败,无具体细节。登录Google Cloud控制台,进入Cloud Build页面找到对应构建任务,查看完整日志输出,定位Docker构建过程中的具体错误(如依赖安装失败、文件缺失、权限冲突等)。

  • 验证Artifact Registry权限
    确保Cloud Build服务账号拥有Artifact Registry的写入权限(roles/artifactregistry.writer)。构建步骤需将镜像推送到us-central1-docker.pkg.dev下的私有仓库,权限不足会导致推送失败,甚至影响构建阶段的镜像标记操作。

  • 检查文件与路径配置

    1. 确认项目根目录的.dockerignore文件是否正确配置,避免排除server.js、package.json等必要文件;
    2. 本地构建正常但Cloud Build失败,可能是本地存在未提交的文件,检查Git仓库是否已将所有必要文件提交到远程。
  • 调整Docker构建参数
    尝试移除构建命令中的--network=cloudbuild参数,部分场景下该网络配置可能导致npm安装依赖时无法正常联网,进而触发构建失败。

  • 排查npm安装权限问题
    Dockerfile中RUN npm ci阶段以root用户执行,后续切换到node用户,若COPY . .后文件权限不符合node用户的访问要求,可能导致启动失败。可尝试修改COPY命令添加权限配置:

    COPY --chown=node:node . .
    
  • 分步调试构建流程
    修改cloudbuild.yaml,暂时只保留Docker构建步骤,验证该步骤是否能独立成功;确认构建正常后,再逐步添加推送和VM创建步骤,缩小问题范围。

内容的提问来源于stack exchange,提问作者Joshua Kolby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 04:06:30