Сбой стандартного развертывания GCP App Engine, гибкое развертывание успешно

Мне было очень трудно заставить что-либо правильно развернуть с помощью Google Cloud Platform с помощью App Engine.

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 не является допустимым временем выполнения, поэтому я изменил его на nodejs8 только для nodejs. Я могу успешно развернуть в гибкой среде с:

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 ответа

Версия Node.js по умолчанию в App Engine Flex взята из последней версии LTS(долгосрочная поддержка). Если вы хотите указать версию, вы можете сделать это в файле package.json вашего приложения, используя поле engine.

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

По этой ссылке вы можете найти более подробное объяснение того, как изменить версию Node.js в среде Flex App App.

Среда выполнения Node.js

Стандартные и гибкие среды значительно отличаются друг от друга, обычно маловероятно, что один и тот же код может быть произвольно развернут одним и тем же кодом, кроме изменений env: flex являются обязательными.

Это правда, но node.js действительно является языком с наименьшим количеством таких различий, но они все еще есть. По крайней мере, пока (стандартное предложение env node.js довольно новое). Другие языки имеют огромное количество различий, например, просто загляните в гибкую среду Python App Engine для пользователей стандартной среды App Engine.

Для node.js runtime это только одно из таких отличий.

Из стандартного файла конфигурации env app.yaml:

Для Node.js, app.yaml требуется включить только runtime: nodejs8 запись

Из гибкого файла конфигурации env app.yaml:

время выполнения: nodejs

Эта настройка обязательна. Это имя среды выполнения App Engine, используемой этим приложением. Чтобы указать Node.js, используйте nodejs,

Может быть интересно: Как определить, относится ли страница документации Google App Engine к стандартной или гибкой среде?

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