Docker 如何将服务检查HTTP与progrium/Consor检查HTTP脚本一起使用?

Docker 如何将服务检查HTTP与progrium/Consor检查HTTP脚本一起使用?,docker,service-discovery,health-monitoring,consul,Docker,Service Discovery,Health Monitoring,Consul,我正在使用gliderlabs/registrator容器运行progrium/Consor容器。我想能够自动创建健康检查的任何容器是注册领事与注册。使用这个,我想使用领事健康检查,以了解是否有任何容器已停止运行。我读到有一种方法可以通过添加环境变量来实现这一点,但我读到的所有内容都过于模糊,比如下面的帖子: 所以我应该设置一些环境变量: ENV SERVICE_CHECK_HTTP=/howareyou ENV SERVICE_CHECK_INTERVAL=5s 我是否将它们放在progr

我正在使用gliderlabs/registrator容器运行progrium/Consor容器。我想能够自动创建健康检查的任何容器是注册领事与注册。使用这个,我想使用领事健康检查,以了解是否有任何容器已停止运行。我读到有一种方法可以通过添加环境变量来实现这一点,但我读到的所有内容都过于模糊,比如下面的帖子:

所以我应该设置一些环境变量:

ENV SERVICE_CHECK_HTTP=/howareyou
ENV SERVICE_CHECK_INTERVAL=5s
我是否将它们放在progrium/Consor容器或gliderlabs/registrator中?我会像这样在docker run命令中添加以下标记来设置它们吗

docker run ...... -e SERVICE_CHECK_HTTP=howareyou -e SERVICE_CHECK_INTERVAL=5s ......

注意:出于某种原因,将上述环境变量添加到我的注册器的docker run命令中,只会导致Concur认为我的节点出现故障,因为没有收到任何ACK

我让Concur进行了健康检查,Gliderlabs注册器以三种方式使用我的Spring Boot应用程序:

  • 将环境变量放入带有
    ENV
    标签的Dockerfile中

  • 使用
    -e
    docker run

  • 将环境变量放入“环境”或“标签”下的docker-compose.yml中

Dockerfile 在Dockerfile文件中:

ENV SERVICE_NAME MyApp
ENV SERVICE_8080_CHECK_HTTP /health
ENV SERVICE_8080_CHECK_INTERVAL 60s
这里的
/health
端点来自Spring Boot执行器库,我只是将它放在Spring Boot应用程序的pom.xml文件中。但是,您也可以使用任何其他端点

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
确保您使用的HTTP服务器端口正确且可访问。在我的例子中,Spring Boot默认使用8080

Docker Compose 在“环境”或“标签”属性下添加运行状况检查信息:

myapp:
    image: apps/myapp
    restart: always
    environment:
     - SERVICE_NAME=MyApp
     - SERVICE_8080_CHECK_HTTP=/health
     - SERVICE_8080_CHECK_INTERVAL=60s
    ports:
     - "8080:8080"
启动领事服务器 默认情况下,“gliderlabs/concur服务器”映像将激活concur用户界面。因此,您不必指定任何其他参数

然后启动注册器 “重新同步”和“注销”参数将确保领事和注册人同步

myapp:
    image: apps/myapp
    restart: always
    environment:
     - SERVICE_NAME=MyApp
     - SERVICE_8080_CHECK_HTTP=/health
     - SERVICE_8080_CHECK_INTERVAL=60s
    ports:
     - "8080:8080"
docker run -d -p "8500:8500" -h "consul" --name consul gliderlabs/consul-server -server -bootstrap
docker run -d \
    --name=registrator \
    -h $(docker-machine ip dockervm) \
    -v=/var/run/docker.sock:/tmp/docker.sock \
    gliderlabs/registrator:v6 -resync 120 -deregister on-success \
    consul://$(docker-machine ip dockervm):8500