Diego 迁移后 IoTP 样板应用程序无法正常工作
IoTP boilerplate application not working after Diego migration
将我的 Watson IoTP 样板应用程序迁移到 Diego 后,它不再启动。我在日志中看到了这个:
[APP/0] OUT Welcome to Node-RED
[APP/0] OUT ===================
[APP/0] OUT 18 Jan 15:43:16 - [info] Node-RED version: v0.15.3
[APP/0] OUT 18 Jan 15:43:16 - [info] Node.js version: v4.6.2
[APP/0] OUT 18 Jan 15:43:16 - [info] Linux 4.4.0-45-generic x64 LE
[APP/0] OUT 18 Jan 15:43:16 - [info] Loading palette nodes
[APP/0] OUT 18 Jan 15:43:18 - [warn] [ibm hdfs in] Deprecated call to RED.runtime.nodes.registerType - node-set name must be provided as first argument
[APP/0] OUT 18 Jan 15:43:18 - [warn] [ibm hdfs] Deprecated call to RED.runtime.nodes.registerType - node-set name must be provided as first argument
[APP/0] OUT 18 Jan 15:43:18 - [warn] [ibmpush] Deprecated call to RED.runtime.nodes.registerType - node-set name must be provided as first argument
[APP/0] OUT 18 Jan 15:43:20 - [info] Settings file : /home/vcap/app/bluemix-settings.js
[APP/0] OUT 18 Jan 15:43:20 - [info] Server now running at http://127.0.0.1:`**1880**`/red/
[APP/0] OUT 18 Jan 15:43:20 - [info] Starting flows
[APP/0] OUT 18 Jan 15:43:20 - [info] Started flows
[CELL/0] ERR Timed out after 1m0s: health check never passed.
[CELL/0] OUT Exit status 0
[CELL/0] OUT Destroying container
[API/8] OUT App instance exited with guid ca3f2bbd-ac6e-42ec-8a61-1ff704274c3e payload: {"instance"=>"", "index"=>0, "reason"=>"CRASHED", "exit_description"=>"2 error(s) occurred:\n\n* 1 error(s) occurred:\n\n* Exited with status 4\n* 2 error(s) occurred:\n\n* cancelled\n* process did not exit", "crash_count"=>2, "crash_timestamp"=>1484754267594231230, "version"=>"0361fa77-694c-4e8f-991e-0c52dd0c4c87"}
我该如何解决这个问题?
问题在于应用程序查找要绑定的端口的方式已随 Diego 发生变化。默认情况下不再填充 VCAP_APP_PORT 环境变量。要修复它,您需要为您的应用程序创建一个 git 存储库(概览选项卡 -> 持续交付 -> 添加 GIT)。使用jazzhub编辑bluemix-settings.js文件更改
ui端口:process.env.VCAP_APP_PORT
至
ui端口:process.env.PORT
部署这些更改,应用应该会启动。
我在 npm express 应用程序中遇到了类似的问题并修复了它而无需编辑 bluemix-settings.js 文件。
简单删除对 process.env.VCAP_APP_HOST 的所有引用(在 Diego 中不再是引用)并将 process.env.VCAP_APP_PORT 更改为 process.env.PORT。
例如,
var host = 'localhost';
var port = (process.env.PORT || 1337);
app.listen(port, host);
console.log('App started on port ' + port);
您可以输入以下内容来检查您的应用是否 运行 Diego:
cf has-diego-enabled APPNAME
安装 diego cli 工具后
cf install-plugin Diego-Enabler -r CF-Community
我还禁用了健康检查:
cf set-health-check APPNAME none
将我的 Watson IoTP 样板应用程序迁移到 Diego 后,它不再启动。我在日志中看到了这个:
[APP/0] OUT Welcome to Node-RED
[APP/0] OUT ===================
[APP/0] OUT 18 Jan 15:43:16 - [info] Node-RED version: v0.15.3
[APP/0] OUT 18 Jan 15:43:16 - [info] Node.js version: v4.6.2
[APP/0] OUT 18 Jan 15:43:16 - [info] Linux 4.4.0-45-generic x64 LE
[APP/0] OUT 18 Jan 15:43:16 - [info] Loading palette nodes
[APP/0] OUT 18 Jan 15:43:18 - [warn] [ibm hdfs in] Deprecated call to RED.runtime.nodes.registerType - node-set name must be provided as first argument
[APP/0] OUT 18 Jan 15:43:18 - [warn] [ibm hdfs] Deprecated call to RED.runtime.nodes.registerType - node-set name must be provided as first argument
[APP/0] OUT 18 Jan 15:43:18 - [warn] [ibmpush] Deprecated call to RED.runtime.nodes.registerType - node-set name must be provided as first argument
[APP/0] OUT 18 Jan 15:43:20 - [info] Settings file : /home/vcap/app/bluemix-settings.js
[APP/0] OUT 18 Jan 15:43:20 - [info] Server now running at http://127.0.0.1:`**1880**`/red/
[APP/0] OUT 18 Jan 15:43:20 - [info] Starting flows
[APP/0] OUT 18 Jan 15:43:20 - [info] Started flows
[CELL/0] ERR Timed out after 1m0s: health check never passed.
[CELL/0] OUT Exit status 0
[CELL/0] OUT Destroying container
[API/8] OUT App instance exited with guid ca3f2bbd-ac6e-42ec-8a61-1ff704274c3e payload: {"instance"=>"", "index"=>0, "reason"=>"CRASHED", "exit_description"=>"2 error(s) occurred:\n\n* 1 error(s) occurred:\n\n* Exited with status 4\n* 2 error(s) occurred:\n\n* cancelled\n* process did not exit", "crash_count"=>2, "crash_timestamp"=>1484754267594231230, "version"=>"0361fa77-694c-4e8f-991e-0c52dd0c4c87"}
我该如何解决这个问题?
问题在于应用程序查找要绑定的端口的方式已随 Diego 发生变化。默认情况下不再填充 VCAP_APP_PORT 环境变量。要修复它,您需要为您的应用程序创建一个 git 存储库(概览选项卡 -> 持续交付 -> 添加 GIT)。使用jazzhub编辑bluemix-settings.js文件更改
ui端口:process.env.VCAP_APP_PORT
至
ui端口:process.env.PORT
部署这些更改,应用应该会启动。
我在 npm express 应用程序中遇到了类似的问题并修复了它而无需编辑 bluemix-settings.js 文件。
简单删除对 process.env.VCAP_APP_HOST 的所有引用(在 Diego 中不再是引用)并将 process.env.VCAP_APP_PORT 更改为 process.env.PORT。
例如,
var host = 'localhost';
var port = (process.env.PORT || 1337);
app.listen(port, host);
console.log('App started on port ' + port);
您可以输入以下内容来检查您的应用是否 运行 Diego:
cf has-diego-enabled APPNAME
安装 diego cli 工具后
cf install-plugin Diego-Enabler -r CF-Community
我还禁用了健康检查:
cf set-health-check APPNAME none