Spring Cloud Консул и Консул Клиенты докеризованы - PullRequest
0 голосов
/ 03 февраля 2020

У меня 2 приложения, оба написаны с использованием весенней загрузки. Оба работают в разных docker контейнерах. У меня также есть консул, работающий в другом контейнере docker. Я открыл порт 8500 для консула, используя файл docker -compose.yml. Итак, как мне указать моим весенним загрузочным приложениям, где регистрироваться, т. Е. Где работает консул. Я даю адрес сопоставленного порта (порт, сопоставленный с моей локальной машиной), или какое-то другое изменение?

Пример, который я сейчас использую: 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:

1 Ответ

1 голос
/ 03 февраля 2020

Вы можете использовать регистратор для своего реестра служб.
Регистратор автоматически регистрирует и отменяет регистрацию служб для любого контейнера Docker, проверяя контейнеры, когда они подключаются к сети. Регистратор поддерживает подключаемые сервисные реестры, в которые в настоящее время входят Consul, etcd и SkyDNS 2.
Вы можете запустить регистратор как контейнер. Он зарегистрирует каждый порт вашего приложения. Ниже приведен пример составного файла: -

  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/

...