最近,由于Redis无法写入文件系统(不知道为什么是Amazon ),我们发生了故障,我注意到没有为Docker服务设置实际的健康检查以确保它正确运行,Redis已经启动,所以我不能简单地使用nc -z来检查端口是否打开。
是否有可以在redis:6-alpine (或非高山)映像中执行的命令,可以放在docker-compose.yml文件的healthcheck块中。
注意,我正在寻找图像中可用的内部命令。不是external healthcheck。
发布于 2022-01-14 06:07:28
尽管@nitrin0的ping操作一般都能工作。它不处理写操作实际上将失败的情况。因此,我执行一个更改,它只会将一个值增加到我不打算使用的键。
image: redis:6
healthcheck:
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]发布于 2021-06-09 13:33:14
如果我没记错的话,图像中包含了redis-cli --所以,也许是这样的:
...
healthcheck:
test: ["CMD", "redis-cli","ping"]发布于 2022-03-16 21:51:41
我刚刚注意到,在这个阶段,redis仍然在启动和加载数据。在这个阶段,redis-cli ping显示了错误
LOADING Redis is loading the dataset in memory但仍然会返回退出代码0,这将使redis报告已经健康。
而且,redis-cli --raw incr ping在此阶段返回0,而不实际成功地递增此键。
作为一种解决办法,我正在检查redis-cli ping是否实际上打印了一个PONG,它只在加载完成之后才打印。
services:
redis:
healthcheck:
test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
interval: 1s
timeout: 3s
retries: 5这是因为当找到字符串("PONG")时,grep只返回0。
https://stackoverflow.com/questions/67904609
复制相似问题