Я пытаюсь решить то, что, по моему мнению, является распространенным вариантом использования микросервисов. В данном случае я тестирую consul с весенним облачным приложением. Я пытаюсь проверить консула двумя разными способами. Первый из них работает в контейнере докеров, а другой - на хост-машине докеров. Затем я пытаюсь запустить весенний облачный контейнер, который будет разговаривать с любым примером консула.
Мне не удалось заставить весеннее облачное приложение разговаривать с консулом, когда весеннее облачное приложение запускается как контейнер докеров. Когда облачное приложение Spring запускается в сетевом режиме хоста, оно работает, поскольку оно может разрешать порты localhost, но это неприемлемое решение, если я хочу запустить несколько экземпляров образа.
Пример моего файла для создания докеров при запуске обеих служб в качестве контейнеров показан ниже. Здесь я пытаюсь установить консула в облаке Spring через переменные среды, но не смог заставить его работать с использованием различных конфигураций. Если бы кто-нибудь мог указать на пример совместной работы этих функций, это было бы чрезвычайно полезно.
consul1:
image: progrium/consul
ports:
- "8400:8400"
- "8500:8500"
- "8600:53/udp"
- "8600:53/tcp"
environment:
GOMAXPROCS: 100
entrypoint: "/bin/consul"
hostname: consul
command: agent -log-level=debug -server -config-dir=/config -bootstrap -ui-dir /ui
simpletest:
build: simpletest
hostname: simpletest
environment:
JAVA_OPTS: "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n -Dspring.cloud.consul.host=consul1"
ports:
- 39041:7051
- 39052:7055
# d2fdockerroot_consul1_1 consul
# links:
# - consul1
links: - consul1
, поскольку это приводит к записи в/etc/hosts
самого простого контейнера, поэтому он разрешаетconsul1
hostname во внутренний IP-адрес докера контейнера consul1. Вы можете проверить это индивидуально, возможно, ваш JAVA_OPTS не используется (каким-то скриптом для установки этих параметров)? - person zapl   schedule 23.12.2015