如何使用wget而不是curl进行Docker运行状况检查?

时间:2017-12-08 22:10:16

标签: docker wget

Docker healthcheck document在curl中显示了这个:

HEALTHCHECK --interval=5m --timeout=3s \
  CMD curl -f http://localhost/ || exit 1 

我希望wget中的单行等价物在未返回HTTP 200时退出。

2 个答案:

答案 0 :(得分:25)

以下似乎是等效的:

HEALTHCHECK  --interval=5m --timeout=3s \
  CMD wget --quiet --tries=1 --spider http://localhost/ || exit 1

答案 1 :(得分:2)

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