Сбой стандартного развертывания 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.
Стандартные и гибкие среды значительно отличаются друг от друга, обычно маловероятно, что один и тот же код может быть произвольно развернут одним и тем же кодом, кроме изменений 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 к стандартной или гибкой среде?