google app engine - prices - Cómo corregir "` El indicador--custom_entrypoint debe establecerse para los tiempos de ejecución personalizados ""?
google cloud app engine prices (3)
Aparece este error en appengine cuando gcloud preview app run app.yaml
: The --custom_entrypoint flag must be set for custom runtimes
Mi app.yaml
ve así:
version: 0-1-1
runtime: custom
vm: true
api_version: 1
manual_scaling:
instances: 1
handlers:
- url: .*
script: dynamic
Mi archivo docker es justo: FROM google/nodejs-runtime
Volví a instalar gcloud
para obtener la última versión, ¿algo cambió en la configuración de yaml para máquinas virtuales administradas? Esto hace que sea imposible para mí probar mi aplicación.
Las líneas de comentario 391 a 397 en
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)
Parece haber un error o un problema de instalación con Google Cloud SDK versión 0.9.67 que causa este error. Como una solución temporal, puede volver a la versión anterior del SDK, que funciona, con los siguientes comandos:
gcloud config set component_manager/fixed_sdk_version 0.9.66
gcloud components update
Para volver a la versión actual del SDK, ejecute:
gcloud config unset component_manager/fixed_sdk_version
gcloud components update
Este problema apareció hace algunas versiones y se trató aquí: Ejecución de node.js en google cloud, pero error al ejecutar con docker
Puede ejecutar la gcloud help preview app run
para mostrar una página de manual que describe el comando de ejecución y sus parámetros. --custom-entrypoint
se describe como:
--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"
Tenga en cuenta que el mensaje de error dice --custom_entrypoint
, con un guión bajo, pero el parámetro es --customer_entrypoint
, con un guión. El nombre correcto es --custom-entrypoint
see: https://code.google.com/p/google-cloud-sdk/issues/detail?id=191
Para un nodejs, debería poder usar algo como:
gcloud preview app run app.yaml --project=your-project-id --custom-entrypoint "node index.js {port}"
Dependiendo de cómo inicie su aplicación. El puerto también parece estar disponible como la variable de entorno PORT por lo que no necesita usar {port}
si su aplicación no maneja argumentos de línea de comando.
No he podido utilizar npm start
u otra npm run <script>
desde --custom-entrypoint
sin embargo.