我将我的应用程序部署到云代工厂后得到以下错误消息:ERR Timed out after 1m0s: health check never passed.
当然在我的本地机器上运行完美。
您应该更改您的健康检查类型。如果应用程序没有公开Web界面,则需要将healthcheck
类型更改为process
。有效值为port
,process
和http
。
要在创建或更新应用程序时配置运行状况检查,请使用cf push命令:
$ cf push YOUR-APP -u process
有关更多信息,请参阅运行状况检查文档:https://docs.cloudfoundry.org/devguide/deploy-apps/healthchecks.html
根据评论中的讨论和我对您正在部署的实际应用程序的测试,看起来这个特定的应用程序需要一个年龄才能开始。可能与单个Java服务超时有关(因为您没有将任何CF服务绑定到应用程序)。
无论如何,虽然我不确定实际问题是什么(可能是PWS本身的一个问题),但这可以通过在执行推送时指定-t
选项或将timeout: <int>
属性添加到清单来解决(参见清单) manifest
文档。
老答复
需要更多细节以确定,但我想有两件事情中的一件发生:
PORT
(或pre-Diego,VCAP_APP_PORT
)环境变量部署应用程序的端口。这默认为8080
,所以如果你的应用程序没有监听8080
(或绑定到127.0.0.1
而不是0.0.0.0
),那么运行状况检查将失败。--no-route
选项进行部署,并且(从Diego开始)需要对其执行cf set-health-check [app-name]
。只有在您的应用程序真正不需要健康检查时才应该这样做。一些构建包可以自动为您处理第一个。您使用的是哪个构建包?或者,您使用的是哪种语言?
您可以使用以下命令禁用运行状况(短期解决方案)
cf push app_name -p target/app.jar -u none