【发布时间】:2017-12-08 22:10:15
【问题描述】:
Docker healthcheck document 为 curl 显示了这个:
HEALTHCHECK --interval=5m --timeout=3s \
CMD curl -f http://localhost/ || exit 1
我想要 wget 中的单行等效项,当未返回 HTTP 200 时将退出 1。
【问题讨论】:
Docker healthcheck document 为 curl 显示了这个:
HEALTHCHECK --interval=5m --timeout=3s \
CMD curl -f http://localhost/ || exit 1
我想要 wget 中的单行等效项,当未返回 HTTP 200 时将退出 1。
【问题讨论】:
以下似乎是等价的:
HEALTHCHECK --interval=5m --timeout=3s \
CMD wget --no-verbose --tries=1 --spider http://localhost/ || exit 1
【讨论】:
|| exit 1 ?如果 wget 失败,健康检查无论如何都会失败
Dennis Hoer 的回答很棒,但是我更喜欢-nv (--no-verbose) 而不是--quiet,那么如果出现错误,可以从Docker那里得到原因:
HEALTHCHECK --interval=5s --timeout=5s --retries=3 \
CMD wget -nv -t1 --spider 'http://localhost:8000/' || exit 1
Docker 捕获的示例输出:
% docker inspect $container --format "{{ (index (.State.Health.Log) 0).Output }}"
Connecting to localhost:8000 (127.0.0.1:8000)
wget: server returned error: HTTP/1.1 404 Not Found
【讨论】:
docker run -it alpine:3.9 wget -nv -t1 --spider 'http://localhost:8000/'