Как исправить "` Флаг --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)