GCP App Engine标准部署失败,灵活部署成功

时间:2018-07-27 09:19:44

标签: google-app-engine google-cloud-platform app.yaml

我很难通过App Engine使用Google Cloud Platform正确部署任何东西。

app.yaml

runtime: nodejs8
#env: flex
beta_settings:
  cloud_sql_instances: my-project:us-central1:my-db

我正在使用以下cmd进行部署:

gcloud app deploy --project=my-project

相对于灵活环境,我更喜欢使用标准环境,因此我注释掉了env:flex。部署后,我将收到一个错误消息,指出nodejs不是有效的运行时,因此我将其仅从nodejs更改为nodejs8。我可以使用以下方法成功部署到灵活的环境中:

env: flex
runtime: nodejs

但是我不能使用:

runtime: nodejs8

错误是:

Beginning deployment of service [default]...
╔════════════════════════════════════════════════════════════╗
╠═ Uploading 0 files to Google Cloud Storage                ═╣
╚════════════════════════════════════════════════════════════╝
File upload done.
Updating service [default]...failed.
ERROR: (gcloud.app.deploy) Error Response: [13] Error importing container 
images.

2 个答案:

答案 0 :(得分:3)

App Engine Flex中的默认Node.js版本取自最新的LTS(长期支持)版本。如果要指定版本,则可以使用引擎字段在应用程序的package.json文件中进行指定。

{
  "engines": {
    "node": "8.x"
  }
}

在此链接中,您可以找到有关如何在App Engine Flex环境中更改Node.js版本的更多详细说明

The Node.js Runtime

答案 1 :(得分:2)

标准和灵活的环境彼此之间有很大的不同,通常不可能在一个或另一个上任意部署完全相同的代码,需要进行env: flex以外的更改。

是的,node.js确实是这种差异最少的语言,但它们仍然存在。至少到目前为止(标准的env node.js产品还很新)。其他语言也有很多差异,例如,仅查看python App Engine Flexible Environment for Users of App Engine Standard Environment指南

对于node.js,runtime只是这些区别之一。

来自标准环境app.yaml Configuration File

  

对于Node.js,要求app.yaml仅包含runtime: nodejs8条目

来自灵活的环境app.yaml Configuration File

  

运行时:nodejs

     

此设置是必需的。它是App Engine语言的名称   此应用程序使用的运行时。要指定Node.js,请使用nodejs

可能感兴趣:How to tell if a Google App Engine documentation page applies to the standard or the flexible environment