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

Docker HEALTHCHECK执行exit 0仍无法返回成功的问题排查

Docker HEALTHCHECK 失败问题排查与解决

核心问题:HEALTHCHECK 语法错误

你当前的HEALTHCHECK命令写法存在错误:

HEALTHCHECK --interval=30s --timeout=10s --start-period=1m --retries=3 CMD [ "CMD-SHELL", "/healthcheck.sh" ]

CMD-SHELL 是 Docker HEALTHCHECK 的语法关键字,不能作为 CMD 指令的参数放在exec格式的数组中。这种写法会让Docker尝试执行名为CMD-SHELL的命令,而该命令实际不存在,因此健康检查必然失败。

两种正确的写法

1. Exec 格式(推荐)

直接指定脚本路径,前提是脚本已拥有执行权限:

HEALTHCHECK --interval=30s --timeout=10s --start-period=1m --retries=3 CMD [ "/healthcheck.sh" ]

2. Shell 格式

使用CMD-SHELL关键字,或直接调用shell执行脚本:

# 写法一:使用 CMD-SHELL 关键字
HEALTHCHECK --interval=30s --timeout=10s --start-period=1m --retries=3 CMD-SHELL "/healthcheck.sh"

# 写法二:直接通过shell执行脚本
HEALTHCHECK --interval=30s --timeout=10s --start-period=1m --retries=3 CMD /bin/sh /healthcheck.sh

额外验证点

  • 确保Dockerfile中已为脚本添加执行权限,比如构建阶段执行:
    COPY healthcheck.sh /
    RUN chmod +x /healthcheck.sh
    
  • 可通过docker logs <容器ID>查看健康检查的输出日志,确认具体错误信息(如命令找不到、脚本权限不足等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:03:14