【问题标题】:How do you perform a HEALTHCHECK in the Redis Docker image?如何在 Redis Docker 映像中执行 HEALTHCHECK?
【发布时间】:2021-08-26 11:38:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: docker redis docker-swarm


    【解决方案1】:

    如果我没记错的话,那张图片包含redis-cli,那么,也许是这样的:

    ...
    healthcheck:
       test: ["CMD", "redis-cli","ping"]
    

    【讨论】:

      【解决方案2】:

      如果您使用包含 redis-cli 的 Redis 映像,也可以将其添加到 Dockerfile 中:

      Linux 码头工人

      HEALTHCHECK CMD redis-cli ping || exit 1
      

      Windows 泊坞窗

      HEALTHCHECK CMD pwsh.exe -command \
      try { \
          $response = ./redis-cli ping; \
          if ($response -eq 'PONG') { return 0} else {return 1}; \
      } catch { return 1 }
      

      【讨论】:

        【解决方案3】:

        尽管来自@nitrin0 答案的ping 操作通常有效。它不处理写操作实际失败的情况。因此,我执行的更改只会增加一个我不打算使用的键的值。

        image: redis:6
        healthcheck:
          test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
        

        【讨论】:

          猜你喜欢
          • 2021-11-16
          • 2021-01-22
          • 2020-02-23
          • 2021-07-22
          • 2020-05-16
          • 1970-01-01
          • 2019-06-14
          • 2017-09-29
          • 2016-02-25
          相关资源
          最近更新 更多