You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下无需Curl实现Typesense服务健康检查的方案

替代curl的Typesense健康检查方案

因为官方Typesense镜像默认未安装curl,你可以用以下几种无需额外安装工具的方法实现健康检查:

方法1:利用Shell内置的/dev/tcp特性

Alpine镜像的默认shell(ash)支持通过/dev/tcp直接建立TCP连接,还能发送HTTP请求验证健康端点:

healthcheck:
  test: ["CMD-SHELL", "echo -e 'GET /health HTTP/1.1\r\nHost: localhost\r\n\r\n' | nc localhost 8108 | grep -q 'OK'"]
  interval: 10s
  timeout: 2s
  retries: 5

如果只需要验证端口连通性(无需检查响应内容),可以用更简洁的写法:

healthcheck:
  test: ["CMD-SHELL", "exec 3<>/dev/tcp/localhost/8108 && echo -e 'GET /health HTTP/1.1\r\nHost: localhost\r\n\r\n' >&3 && grep -q 'OK' <&3"]
  interval: 10s
  timeout: 2s
  retries: 5

方法2:使用nc(netcat)命令

大部分轻量Linux镜像都自带nc,可以用它来检测端口或验证健康端点:
仅检查端口连通性:

healthcheck:
  test: ["CMD", "nc", "-z", "localhost", "8108"]
  interval: 10s
  timeout: 2s
  retries: 5

需要验证/health端点响应内容时:

healthcheck:
  test: ["CMD-SHELL", "echo 'GET /health' | nc localhost 8108 | grep -E 'HTTP/1.1 200 OK|OK'"]
  interval: 10s
  timeout: 2s
  retries: 5

方法3:自定义构建Typesense镜像(可选)

如果你愿意修改镜像构建步骤,可以在基础镜像上安装curl,保留原健康检查配置:
创建Dockerfile.typesense:

FROM typesense/typesense:28.0.rc15
RUN apk add --no-cache curl

然后修改docker-compose中typesense服务的构建配置:

typesense:
  build:
    context: .
    dockerfile: Dockerfile.typesense
  # 其余配置保持不变

注意:方法1和2无需修改镜像,直接调整docker-compose的healthcheck配置即可,推荐优先使用方法1(能验证健康端点的具体响应,可靠性更高)。

内容的提问来源于stack exchange,提问作者Rasik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 16:09:51