我正在使用IBM Cloud来部署一个javascript应用程序,它充当了不和谐的监听器聊天机器人。
当我部署代码时,僵尸程序已启动,但只在部署阶段轮询机器人运行实例的一段时间内保持运行状态。在日志中我看到:
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
...等等。在搜索后我发现cf正在轮询一条不应该存在的路由,因为这个应用程序只是一个监听器,所以我添加了最后一行:
no-route: true
到我的manifest.yml:
applications:
- path: .
name: discord-bot
environment_json: {}
memory: 256M
instances: 1
disk_quota: 1024M
services: []
no-route: true
这将删除日志中的路由:
Removing route discord-bot....
但是,我得到同样的问题,它轮询,找到0个实例,并最终崩溃与消息:
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 crashed
FAILED
Error restarting application: Start unsuccessful
当我使用IBM-Cloud时,我不确定如何在命令行上推送应用程序时指定像'--no-route'这样的参数,但我认为这无论如何都不会起作用,因为该行在我的manifest.yml,在部署阶段得到承认,但它仍然会检查应用程序是否正在运行。
我知道我已经说过,但只是为了说明,我的机器人在检查实例时完全正常运行。这样做大约三分钟,决定它找不到一个,然后崩溃。如果我可以删除此检查过程,应用程序应该工作。
我该怎么做呢?
你需要了解Cloud Foundry checks the app health。默认情况下,它需要一个Web应用程序并轮询该端口,即使您不想要到该应用程序的路由。你可以configure a different health check type in the manifest file。
保留你的no-route
设置并使用process
进行健康检查。