Ant*_*maz 7 google-app-engine node.js docker google-cloud-platform google-cloud-build
我使用 Cloud Build 从存储复制配置文件并将应用程序部署到App Engine flex. 问题是每次构建持续超过 10 分钟就会失败。我在 cloudbuild.yaml 中指定了超时,但看起来它被忽略了。另外,我配置app/cloud_build_timeout并将其设置为 1000。有人可以向我解释一下这里出了什么问题吗?
我的cloudbuild.yaml样子是这样的:
steps:
  - name: gcr.io/cloud-builders/gsutil
    args: ["cp", "gs://myproj-dev-247118.appspot.com/.env.cloud", ".env"]
  - name: "gcr.io/cloud-builders/gcloud"
    args: ["app", "deploy"]
    timeout: 1000s
timeout: 1600s
我app.yaml使用从 Dockerfile 构建的自定义环境,如下所示:
runtime: custom
env: flex
manual_scaling:
  instances: 1
env_variables:
  NODE_ENV: dev
Dockerfile 也不包含任何特殊内容,只是安装依赖项和应用程序构建:
FROM node:10 as front-builder
WORKDIR /app
COPY front-end .
RUN npm install
RUN npm run build:web
FROM node:12
WORKDIR /app
COPY api .
RUN npm install
RUN npm run build
COPY .env .env
EXPOSE 8080
COPY --from=front-builder /app/web-build web-build
CMD npm start
例如,当直接运行gcloud app deployApp Engine Flex 应用程序时(例如,从本地计算机),它会在后台生成一个 Cloud Build 作业来构建映像,然后将该映像部署到 GAE(您可以在 Cloud Console > Cloud Build 中看到该构建)。此构建有 10 分钟超时,可以通过以下方式自定义:
gcloud config set app/cloud_build_timeout 1000
现在,这里的问题是您gcloud app deploy从 Cloud Build 本身发出命令。由于每个单独的 Cloud Build 步骤都在其自己的 Docker 容器中运行,因此您不能仅添加上一个步骤来自定义超时,因为下一个步骤将使用默认gcloud设置。
您有多种选择来解决此问题:
docker build,然后将其上传到 Google Cloud Registry。您可以在这些步骤上设置自定义超时以满足您的需求。最后,使用glcoud app deploy --image-url=IMAGE-URL.app/cloud_build_timeout设置为您的自定义值。您可以从默认的 gcloud 构建器 Dockerfile中派生它并添加/builder/google-cloud-sdk/bin/gcloud config set app/cloud_build_timeout 1000| 归档时间: | 
 | 
| 查看次数: | 2114 次 | 
| 最近记录: |