Не удалось развернуть управляемую виртуальную машину, поскольку параметр env не поддерживается

Попытка развернуть приложение Java на управляемой виртуальной машине Google Appengine. Я использую консоль 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.

Я вижу похожую ошибку ( там) для maven-gcloud-plugin это происходит, когда проект не настроен как WAR. Но обратите внимание, что:

  • я использую простой инструмент командной строки gcloud, последняя версия
  • и мой проект уже упакован в WAR

Также я использую следующие app.yaml (который я получил из источников плагинов Maven):

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

Таким образом, вопрос, откуда взялась эта ошибка (образ докера уже подготовлен в данный момент, верно?). Что это означает? И как это исправить?

Обновление я заметил, что он использует FROM gcr.io/google_appengine/jetty9 для ВМ. Но для 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 ответ

Причиной была эта строка в app.yaml:

env: 2

это было слишком просто и слишком очевидно, чтобы попытаться развернуть эту опцию без использования. Кроме того, каждый документ, официальный и неофициальный, упоминает, что вам нужно иметь env: 2 опция, установленная для развертывания вашего приложения как приложения Appengine. Это действительно странно.

Удаление этой строки также изменило базовый образ Docker на gcr.io/google_appengine/java-compat, Я думаю, это означает, что изображения причала, в том числе jetty9-compat, не совместимы с приложениями Appengine

Другие вопросы по тегам