IBM Cloud:让 Cloud Foundry 不轮询应用程序实例(健康检查)

IBM Cloud: Have Cloud Foundry not poll for instance of application (health check)

我正在使用 IBM Cloud 部署一个 javascript 应用程序,它充当 discord 的侦听器聊天机器人。

当我部署代码时,机器人启动了,但只在部署阶段轮询机器人实例的时间段内保持启动 运行。在日志中我看到:

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. By default it expects a web app and polls that port, even if you do not want a route to that app. You can configure a different health check type in the manifest file

保留您的 no-route 设置并使用 process 作为健康检查类型。