尝试创建Google托管虚拟机时出现超时错误

ido*_*mun 8 google-app-engine google-compute-engine google-cloud-platform google-managed-vm

我正在尝试使用谷歌自定义运行时为我的节点4应用程序创建托管虚拟机.

我创建了以下Dockerfile:

FROM node:4.2.1

ENV PORT 8080

ADD package.json package.json
RUN npm install
ADD . .

CMD [ "npm", "start" ]
Run Code Online (Sandbox Code Playgroud)

随着这个app.yaml:

# [START runtime]
runtime: custom
vm: true
api_version: 1
# [END runtime]

health_check:
  enable_health_check: false

skip_files:
 - ^(.*/)?#.*#$
 - ^(.*/)?.*~$
 - ^(.*/)?.*\.py[co]$
 - ^(.*/)?.*/RCS/.*$
 - ^(.*/)?\..*$
 - ^(.*/)?.*/node_modules/.*$
 - ^(.*/)?.*\.log$
Run Code Online (Sandbox Code Playgroud)

我使用gcloud preview命令部署应用程序:

gcloud preview app deploy app.yaml --promote
Run Code Online (Sandbox Code Playgroud)

看起来Docker正在构建正确但在过程结束时我收到此消息:

Copying files to Google Cloud Storage...
Synchronizing files to [gs://staging.my-project-id.appspot.com/].
Updating module [default]...\Deleted [https://www.googleapis.com/compute/v1/projects/my-project-id/zones/us-central1-f/instances/gae-builder-vm-20151030t142257].
Updating module [default]...failed.
ERROR: (gcloud.preview.app.deploy) Error Response: [4] Timed out creating VMs.
Run Code Online (Sandbox Code Playgroud)

nic*_*asf 2

我的部署现在正在运行。我之前曾为另一个项目解决过同样的问题,但我手头没有代码,所以我不得不再次解决这些问题。

部署一直顺利进行,直到最后一步,更新模块会超时。这让我认为这与应用程序在虚拟机上启动并且没有适当响应有关,因此最终的挂钩会超时。

您可以在这里找到大量信息 - https://cloud.google.com/appengine/docs/management-vms/config。我检查了以下事项:

  • 日志记录 - 确保您写入正确的日志文件。请参阅https://cloud.google.com/appengine/docs/management-vms/custom-runtimes#logging
  • 确保您有 .dockerignore 文件并跳过 app.yaml 中的文件,这样您就不会要求进程跨不需要的 node_modules 或日志文件进行复制
  • 如果您不使用健康检查,请关闭它,或者确保您为其配置了正确的express.js 路由
  • 检查您的环境变量是否已设置并与 GAE 可以使用的环境变量相匹配。这是我的最后一步 - GAE 将允许您绑定到 8080 上的虚拟机端口。我必须在 app.yaml 中传递 NODE_ENV 标志,告诉应用程序使用 8080 而不是 3000。
  • 在app.yaml中提升GAE实例的资源。我指定了两个逻辑 CPU,并将 ram 设置为 2 gig。

祝你好运。

  • 实际上,对我来说解决问题的是创建一个新的应用程序引擎项目 (2认同)