首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Redis Docker图像中执行健康检查?

问如何在Redis Docker图像中执行健康检查?
EN

Stack Overflow用户
提问于 2021-06-09 12:56:41
回答 4查看 16.1K关注 0票数 31

最近,由于Redis无法写入文件系统(不知道为什么是Amazon ),我们发生了故障,我注意到没有为Docker服务设置实际的健康检查以确保它正确运行,Redis已经启动,所以我不能简单地使用nc -z来检查端口是否打开。

是否有可以在redis:6-alpine (或非高山)映像中执行的命令,可以放在docker-compose.yml文件的healthcheck块中。

注意,我正在寻找图像中可用的内部命令。不是external healthcheck。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-01-14 06:07:28

尽管@nitrin0的ping操作一般都能工作。它不处理写操作实际上将失败的情况。因此,我执行一个更改,它只会将一个值增加到我不打算使用的键。

代码语言:javascript
复制
image: redis:6
healthcheck:
  test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
票数 18
EN

Stack Overflow用户

发布于 2021-06-09 13:33:14

如果我没记错的话,图像中包含了redis-cli --所以,也许是这样的:

代码语言:javascript
复制
...
healthcheck:
   test: ["CMD", "redis-cli","ping"]
票数 32
EN

Stack Overflow用户

发布于 2022-03-16 21:51:41

我刚刚注意到,在这个阶段,redis仍然在启动和加载数据。在这个阶段,redis-cli ping显示了错误

代码语言:javascript
复制
LOADING Redis is loading the dataset in memory

但仍然会返回退出代码0,这将使redis报告已经健康。

而且,redis-cli --raw incr ping在此阶段返回0,而不实际成功地递增此键。

作为一种解决办法,我正在检查redis-cli ping是否实际上打印了一个PONG,它只在加载完成之后才打印。

代码语言:javascript
复制
services:
  redis:
    healthcheck:
      test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
      interval: 1s
      timeout: 3s
      retries: 5

这是因为当找到字符串("PONG")时,grep只返回0。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67904609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档