Spring Cloud Consul 和 Consul Clients dockerized

Spring Cloud Consul and Consul Clients dockerized

我有 2 个应用程序,都是使用 spring 引导编写的。两者都 运行 在不同的 docker 容器中。我在另一个 docker 容器中也有 consul 运行。我已经使用 docker-compose.yml 文件为 consul 公开了端口 8500。那么,我如何为我的 spring 启动应用程序指定在哪里注册自己,即 consul 运行 在哪里。我是给出映射端口的地址(映射到我本地机器的端口),还是其他一些更改?

我现在使用的示例:https://github.com/Java-Techie-jt/cloud-consul-service-discovery

编辑:

docker-compose.yml:

version: "2"

services:
  consul:
    container_name: consul
    image: consul
    expose:
      - "8300"
      - "8400"
      - "8500"
    restart: always
  registrator:
    container_name: registrator
    image: gliderlabs/registrator:master
    volumes:
      - "/var/run/docker.sock:/tmp/docker.sock"
    command: -internal consul://consul:8500
    restart: always
    depends_on:
      - consul
  web1:
    image: deis/mock-http-server
    container_name: web1
    expose:
      - "8080"
    environment:
      SERVICE_NAME: "web"
      SERVICE_TAGS: "web"
    restart: always
    depends_on:
      - registrator
  web2:
    image: deis/mock-http-server
    container_name: web2
    expose:
      - "8080"
    environment:
      SERVICE_8080_NAME: "web"
      SERVICE_8080_TAGS: "web"
    restart: always
    depends_on:
      - registrator
  haproxy:
    build: ./haproxy
    container_name: my-haproxy
    image: anthcourtney/haproxy-consul
    ports:
      - 80
    depends_on:
      - web1
      - web2
  test:
    container_name: test-client
    build: ./test
    depends_on:
      - haproxy

networks:
  default:

您可以使用 registrator 作为您的服务注册表。
Registrator 通过在容器联机时检查容器,自动为任何 Docker 容器注册和注销服务。 Registrator 支持可插拔服务注册中心,目前包括 Consul、etcd 和 SkyDNS 2。
您可以 运行 注册器,因为 container.It 将注册您应用程序的每个端口。以下是示例撰写文件:-

  version: '2'
  services:
  registrator:
    image: "${REGISTRY}gliderlabs/registrator:latest"
    command: [
      "-ip=<docker-host-ip>",
      "-retry-attempts", "100",
      "-cleanup",
      # "-internal",
      "consul://vconsul:8500"
    ]

官方文档:https://gliderlabs.github.io/registrator/latest/