托管虚拟机部署失败,因为" env"设置不受支持

时间:2016-01-13 07:03:06

标签: java google-app-engine google-cloud-platform gcloud google-managed-vm

尝试将Java应用程序部署到Google Appengine托管VM。我正在使用控制台gcloud并已准备好WAR文件。加上app.yaml。

使用以下命令:

gcloud preview app deploy ./build/libs/app.yaml

现在它失败了:

Building and pushing image for module [default]
-------------------------------------------------------------------------------- DOCKER BUILD OUTPUT --------------------------------------------------------------------------------
Step 0 : FROM gcr.io/google_appengine/jetty9
---> 005014071b64
Step 1 : ADD webapp-webapp.war $JETTY_BASE/webapps/root.war
---> 3e9023930cc8
Removing intermediate container 342e8a2f5750
Successfully built 3e9023930cc8
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Beginning teardown of remote build environment (this may take a few seconds).
Updating module [default]...failed.
ERROR: (gcloud.preview.app.deploy) Error Response: [400] "env" setting is not supported for this deployment.

我发现项目未配置为WAR时发生的maven-gcloud-plugin类似错误(there)。但请注意:

  • 我使用普通命令行工具gcloud,最新版本
  • 我的项目已经打包成WAR

我还使用了以下app.yaml(我从maven插件来源获得):

runtime: java
env: 2
api_version: 1
handlers:
  - url: .*
    script: dynamic

所以问题是,这个错误来自何处(此时已经准备好了码头图像,对吧?)。这是什么意思?以及如何解决这个问题?

更新 我注意到它使用FROM gcr.io/google_appengine/jetty9用于VM。但对于Appengine,它应该是FROM gcr.io/google_appengine/jetty9-compat。我试图切换到爆炸应用而不是WAR,它开始使用正确的Docker基础映像。但仍然失败:

Building and pushing image for module [default]
-------------------------------------------------------------------------------- DOCKER BUILD OUTPUT --------------------------------------------------------------------------------
Step 0 : FROM gcr.io/google_appengine/jetty9-compat
---> 2ad8572ef3d8
Step 1 : ADD . /app/
---> b10f4bc6718e
Removing intermediate container 8b149f4baf9c
Successfully built b10f4bc6718e
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Beginning teardown of remote build environment (this may take a few seconds).
Updating module [default]...failed.
ERROR: (gcloud.preview.app.deploy) Error Response: [400] "env" setting is not supported for this deployment.

1 个答案:

答案 0 :(得分:0)

原因是app.yaml中的这一行:

env: 2

尝试部署w / o这个选项太简单太明显了。此外,每个官方和非官方文档都提到您需要设置env: 2选项以将您的应用部署为Appengine应用。这真的很奇怪。

删除此行也会将基本Docker镜像更改为gcr.io/google_appengine/java-compat。我想这意味着包括jetty9-compat在内的码头图片与Appengine应用程序不兼容