首页 > 解决方案 > 为什么 Google App Engine flex 构建步骤会失败,而标准适用于相同的代码?

问题描述

我们的 nodejs 应用程序在 GAE 标准中运行良好。但是我们需要使用 websockets,所以我们使用 Flex。然而,我们在使用 Flex 时遇到了各种各样的构建时问题。

因此,我们想通过一个gcp-build步骤部署 GAE Flex,但会遇到各种错误,例如:

Step #1: error building image: error building stage: symlink /app/packages/node_modules/autoprefixer/bin/autoprefixer /app/packages/client/node_modules/.bin/autoprefixer: file exists

而且,在修补之后,还会出现这个错误:

error building image: read tcp 192.168.10.2:54502->74.125.20.128:443: read: connection reset by peer

我们在一个带有 lerna 的 mono-repo 应用程序上,我们的gcp-build脚本只是执行以下操作:yarn build随后执行:"build": "lerna run build --scope=client --scope=server --scope=common --stream"


我们有一种预感,gcp-build它只适用于标准 env 而不是 flex。如果确实如此,您会如何建议我们在 GAE Flex 中运行构建步骤?如果不是,那么所有这些“建筑形象”错误是怎么回事?使用相同的代码在 GAE 标准中一切正常!

标签: google-app-enginegoogle-cloud-platform

解决方案


终于让我们的弹性服务器运行起来了。所以这里是我最初的问题的答案:


首先,通过在我们的 gcp-build 步骤中Step #1: error building image: error building stage: symlink /app/packages/node_modules/autoprefixer/bin/autoprefixer /app/packages/client/node_modules/.bin/autoprefixer: file exists运行解决了该错误。yarn build && rm -rf ./packages/client/node_modules


无法重现第二个错误error building image: read tcp 192.168.10.2:54502->74.125.20.128:443: read: connection reset by peer,后来发现这可能是由于我的互联网连接在部署期间中断,如下面引用的 gcloud 支持代理所建议的:

这意味着构建失败,因为该库不存在,此时此 IP 没有响应。


最后,关于 gcp-build 是否仅适用于标准 env 而不是 flex 的第三个问题。这不是真的。它适用于同一代理引用的标准和弹性:

关于“gcp-build”仅适用于标准 env 而不是 flex 的问题,这是不正确的,您可以在 App Engine 标准和 Flex [1] 中使用 gcp-build。


推荐阅读