如何在docker容器中为python代码添加健康检查

S A*_*rew 5 docker

我刚刚开始探索Health Checkdocker 中的功能。所有在线教程都展示了相同类型的健康检查示例。像这个link1 link2。他们正在使用相同的命令:

HEALTHCHECK CMD curl --fail http://localhost:3000/ || exit 1

我有一个 python 代码,我已经将它转换成 docker 镜像,并且它的容器运行良好。我在容器中有运行良好的服务,但我想对这个服务进行健康检查。它使用以下方式启动/停止:

service <myservice> start

service <myservice> stop

该服务负责向服务器发送数据。我需要对此进行健康检查,但不知道该怎么做。我已经搜索过这个,但没有找到任何例子。任何人都可以请指向我正确的链接或可以解释它。?

谢谢

omu*_*gru 3

运行状况检查命令并不是什么神奇的东西,而是您可以自动化以获得更好的服务状态的东西。

在设置健康检查之前您应该问自己一些问题:

  • 我通常如何验证服务是否运行正常,假设我正常运行它而不是在容器内运行它,并且它不是一个自动化过程,而是我自己检查状态做一些事情

  • 如果服务没有可以询问的开放端口,它是否会将其成功/失败状态写入磁盘上的文件内?

  • 如果服务具有开放端口,但它通过自定义协议进行通信,我是否有任何工具可以用来询问开放端口

让我们看看curl您列出的命令:它意味着列出的运行状况检查正在监视在端口 3000 上启动的 http 服务。如果返回的 http 状态代码不是 200,curl 命令将失败。这非常简单地演示了运行状况检查的用法。

假设您从服务中每 30 秒写入success或到一个文件,那么您的健康检查将是一个在遇到文本时异常退出的脚本failurefailure

假设您的服务有一个开放端口,但通过一些自定义协议(如协议缓冲区)进行通信,那么您所要做的就是使用一个脚本调用它,该脚本使用 proto buf 对有效负载进行编码,然后检查收到的输出

等等...