如何修复“必须为自定义运行时设置 --custom_entrypoint 标志”?
How to fix "`The --custom_entrypoint flag must be set for custom runtimes`"?
我在 运行 gcloud preview app run app.yaml
时在 Appengine 上收到此错误:
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
我的 dockerfile 是:
FROM google/nodejs-runtime
我重新安装了 gcloud
以获得最新版本,托管 VM 的 yaml 配置是否发生了某些变化?这让我无法测试我的应用程序。
在
中注释第 391 到 397 行
google-cloud-sdk/platform/google_appengine/google/appengine/tools/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)
Google Cloud SDK 版本 0.9.67 似乎存在错误或设置问题导致此错误。作为临时解决方法,您可以使用以下命令恢复到之前可用的 SDK 版本:
gcloud config set component_manager/fixed_sdk_version 0.9.66
gcloud components update
到return到SDK的当前版本,运行:
gcloud config unset component_manager/fixed_sdk_version
gcloud components update
这个问题出现在几个版本之前,并在此处得到解决:
您可以 运行 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
或 --custom-entrypoint
中的其他 npm run <script>
。
我在 运行 gcloud preview app run app.yaml
时在 Appengine 上收到此错误:
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
我的 dockerfile 是:
FROM google/nodejs-runtime
我重新安装了 gcloud
以获得最新版本,托管 VM 的 yaml 配置是否发生了某些变化?这让我无法测试我的应用程序。
在
中注释第 391 到 397 行google-cloud-sdk/platform/google_appengine/google/appengine/tools/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)
Google Cloud SDK 版本 0.9.67 似乎存在错误或设置问题导致此错误。作为临时解决方法,您可以使用以下命令恢复到之前可用的 SDK 版本:
gcloud config set component_manager/fixed_sdk_version 0.9.66
gcloud components update
到return到SDK的当前版本,运行:
gcloud config unset component_manager/fixed_sdk_version
gcloud components update
这个问题出现在几个版本之前,并在此处得到解决:
您可以 运行 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
或 --custom-entrypoint
中的其他 npm run <script>
。