如何在Docker容器中为Python代码添加健康检查

5
我刚开始探索Docker的“Health Check”功能。所有在线教程都展示了相同类型的健康检查示例。比如link1link2。它们都使用了相同的命令:

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

我有一段Python代码,已经被转换成Docker镜像并成功地运行在容器中。容器内有一个能够很好地运行的服务,但我想在这个服务上加上一个健康检查。它是通过以下命令启动/停止的:

service <myservice> start

service <myservice> stop

该服务负责向服务器发送数据。我需要对其进行健康检查,但不知道如何实现。我已经搜索过,没有找到任何示例。有人能指点我正确的链接或者解释一下吗?

谢谢!

1个回答

3
健康检查命令并不神奇,而是您可以自动化以获得更好的服务状态。在设置健康检查之前,应该问自己以下几个问题:
- 如果我正常运行服务而不是在容器中运行,并且它不是自动化进程,那么我通常如何验证服务是否正常运行?我通过自己进行某些操作来检查状态。 - 如果服务没有打开可以被查询的端口,那么它是否会将成功/失败状态写入文件? - 如果服务已经打开了端口,但是使用自定义协议进行通信,那么我是否有任何工具用于查询这些开放的端口?
以您列出的curl命令为例:它意味着所列出的健康检查正在监视在端口3000上启动的http服务。如果返回的http状态码不是200,则curl命令将失败。这很容易演示健康检查的用法。
假设您从服务每30秒钟向文件中写入“success”或“failure”,那么您的健康检查将是一个脚本,当遇到“failure”文本时异常退出。
假设您的服务具有打开端口,但是使用一些自定义协议进行通信,例如协议缓冲区,则只需使用编码载荷的脚本调用它,然后检查接收到的输出即可。
等等...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接