Как исправить "` Флаг --custom_entrypoint должен быть установлен для пользовательских сред выполнения`"?

Я получаю эту ошибку на appengine при запуске gcloud preview app run app.yaml:The --custom_entrypoint flag must be set for custom runtimes

мой app.yamlпохоже:

version: 0-1-1
runtime: custom
vm: true
api_version: 1
manual_scaling:
  instances: 1

handlers:
  - url: .*
    script: dynamic

Мой докер-файл просто:FROM google/nodejs-runtime

Я переустанавливал gcloud чтобы получить последнюю версию, что-то изменилось в конфигурации yaml для управляемых виртуальных машин? Это делает невозможным для меня тестирование моего приложения.

3 ответа

Решение

Похоже, что в Google Cloud SDK версии 0.9.67 возникла ошибка или проблема с настройкой, вызывающая эту ошибку. В качестве временного решения вы можете вернуться к предыдущей версии SDK, которая работает, с помощью следующих команд:

gcloud config set component_manager/fixed_sdk_version 0.9.66
gcloud components update

Чтобы вернуться к текущей версии SDK, запустите:

gcloud config unset component_manager/fixed_sdk_version
gcloud components update

Эта проблема появилась несколько версий назад и была решена здесь: Запуск node.js в облаке Google, но ошибка при запуске с докером

Вы можете запустить gcloud help preview app run показать страницу руководства, описывающую команду запуска и ее параметры. --custom-entrypoint описывается как:

 --custom-entrypoint CUSTOM_ENTRYPOINT
    Specify an entrypoint for custom runtime modules. This is required when
    such modules are present. Include "{port}" in the string (without
    quotes) to pass the port number in as an argument. For instance:
    --custom_entrypoint="gunicorn -b localhost:{port} mymodule:application"

Обратите внимание, что сообщение об ошибке говорит --custom_entrypoint, с подчеркиванием, но параметр --customer_entrypointс чертой. Правильное имя --custom-entrypoint см. https://code.google.com/p/google-cloud-sdk/issues/detail?id=191

Для nodejs вы должны использовать что-то вроде:

gcloud preview app run app.yaml --project=your-project-id --custom-entrypoint "node index.js {port}"

В зависимости от того, как вы запустите свое приложение. Порт также доступен как переменная окружения PORT, поэтому вам не нужно использовать {port} если ваше приложение не обрабатывает аргументы командной строки.

Я не смог использовать npm start или другой npm run <script> от --custom-entrypoint тем не мение.

Строки комментариев от 391 до 397 в

Google-облако SDK / платформа /google_appengine/ Google/ AppEngine / инструменты /devappserver2/module.py

#      if (self._module_configuration.effective_runtime == 'custom' and
#          os.environ.get('GAE_LOCAL_VM_RUNTIME') != '0'):
#        if not self._custom_config.custom_entrypoint:
#          raise ValueError('The --custom_entrypoint flag must be set for '
#                           'custom runtimes')
#        else:
#          runtime_config.custom_config.CopyFrom(self._custom_config)
Другие вопросы по тегам