代码之家  ›  专栏  ›  技术社区  ›  Dennis Hoer

如何用wget而不是curl进行Docker健康检查?

  •  24
  • Dennis Hoer  · 技术社区  · 7 年前

    码头工人 healthcheck document 显示了卷曲:

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

    我希望在wget中有一行等价物,当HTTP 200未返回时,它将退出1。

    2 回复  |  直到 7 年前
        1
  •  74
  •   Dennis Hoer    4 年前

    以下似乎是等效的:

    HEALTHCHECK  --interval=5m --timeout=3s \
      CMD wget --no-verbose --tries=1 --spider http://localhost/ || exit 1
    
        2
  •  6
  •   intgr    4 年前

    丹尼斯·霍尔的回答很好,但我更喜欢 -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