2015-07-07 4 views
7

Я получаю эту ошибку на AppEngine, когда я бегу gcloud preview app run app.yaml: The --custom_entrypoint flag must be set for custom runtimesКак исправить «Флаг --custom_entrypoint должен быть установлен для пользовательских времен исполнения»?

Мои app.yaml выглядит следующим образом:

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

handlers: 
    - url: .* 
    script: dynamic 

Мой dockerfile просто: FROM google/nodejs-runtime

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

+0

Была обнаружена ошибка с Google Cloud SDK версии 0.9.65, но она должна быть исправлена. Вы можете проверить, какая версия SDK у вас есть: gcloud version Связанный вопрос и обходной путь: http://stackoverflow.com/questions/30945321/running-node-js-on-google-cloud-but-error-running- with-docker –

+0

FYI - Я также вижу эту ошибку с Google Cloud SDK 0.9.67. Я проверяю обходной путь или исправление. –

+1

Просто для обновления, я откатился к предыдущей версии 0.9.66 и больше не вижу ошибки. Я запустил: gcloud config set component_manager/fixed_sdk_version 0.9.66 - Чтобы вернуться к последнему, запустите: gcloud config unset component_manager/fixed_sdk_version –

ответ

6

Там, кажется, ошибка или установки с помощью 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 

Этот вопрос появился несколько версий назад и был рассмотрен здесь: Running node.js on google cloud, but error running with docker

0

Комментарий линий 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) 
4

Вы можете запустить 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.