healthcheck url指向自身时Docker swarm服务未启动

healthcheck url指向自身时Docker swarm服务未启动,docker,traefik,Docker,Traefik,如果healthcheck url指向自身,traefik无法运行,会出现什么问题? 使用google it works,使用traefik域,这项服务甚至还没有启动 我遵循了下面的示例: 出现故障时,docker服务ls的输出显示0/1个副本。成功时(使用假谷歌url),显示1/1,仪表板可访问。 traefik的日志没有显示错误 ID NAME MODE REPLICAS

如果healthcheck url指向自身,
traefik
无法运行,会出现什么问题? 使用google it works,使用traefik域,这项服务甚至还没有启动

我遵循了下面的示例:

出现故障时,
docker服务ls
的输出显示0/1个副本。成功时(使用假谷歌url),显示1/1,仪表板可访问。 traefik的日志没有显示错误

ID                  NAME                           MODE                REPLICAS            IMAGE                     PORTS                                                    
yghvyj2l7ri2        mystack-traefik_traefik        replicated          0/1                 traefik:v2.4.7            *:80->80/tcp, *:443->443/tcp

一般来说,必须对特定容器(或swarm术语中的任务)执行运行状况检查,而不涉及负载平衡器、联锁等其他对象,最好的方法是直接参考localhost/127.0.0.1

此外,还设计了一个所谓的“活跃度探测器”,它告诉容器在容器生命的早期阶段就“准备好”swarm或其他编曲

从这个意义上讲,更安全的做法是去掉所有不必要的“步骤”,例如尽可能避免使用TLS证书

综上所述,您可能会让您的健康检查工作如下:

  test: wget --quiet --tries=1 --spider http://traefik.mydomain.com:8080/ping || exit 1
(例如,使用http代替https和http关联端口,即8080)。 更好的方法是参考localhost

  test: wget --quiet --tries=1 --spider http://127.0.0.1:8080/ping || exit 1
更好的方法是使用已为此提供的

  test: traefik healthcheck --ping
我的建议是使用最后一个

我补充说,大部分(如果不是全部的话)关于健康检查的考虑都是使用docker compose而不是swarm

  test: traefik healthcheck --ping