Консул разделяет сеть от docker - PullRequest
3 голосов
/ 05 апреля 2020

В docker.

  vote-consul-server:
    image: consul:1.7.2
    environment:
      CONSUL_BIND_INTERFACE: eth0
    ports:
      - "${CONSUL_PORT}:8500"

есть консул-сервер. Он генерирует хосты для зарегистрированных приложений. Основная проблема заключается в том, что другие приложения не могут взаимодействовать друг с другом, если они не находятся в docker.

Например: у меня есть config-service (docker с консулом), user-service (IDE) ). Когда пользовательский сервис запускается, он запрашивает конфигурации от config-сервера, но консул выдает неверную ссылку (доступно только в сети docker).

c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://83a6c7ab12d0:8888/

Как опубликовать sh все ссылки из консула (docker)

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Поскольку каждый контейнер имеет собственную IP и может иметь собственную сеть, вы можете попробовать использовать host сеть:

docker run --rm -d --network host --name vote-consul-server

Подробнее см. учебник по работе с сетью хоста .

Также вы можете узнать о сетевом взаимодействии с точки зрения контейнера

0 голосов
/ 06 апреля 2020

Прежде всего - необходимо определить конфигурацию IP-адреса в bootstrap .yaml

spring:
  ...
  cloud:
    consul:
      host: ${CONSUL_HOST}
      port: ${CONSUL_PORT}
      discovery:
        ip-address: ${CONSUL_HOST}
        prefer-ip-address: true

Основные свойства: ip-адрес и предпочитаемый-ip-адрес.

Если все приложения работают в одной сети - проблемы не существует. Например: все сервисы работают в docker.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...