Я в тупике из-за проблемы с сетью докеров и Java. У меня есть несколько контейнеров, запущенных через docker-compose. Некоторым нужно поговорить с другими. Например, один контейнер запускает RabbitMQ, а другой подключается к нему. Все работает нормально, если я использую URL-адреса, которые я подключаю к именам контейнеров. Однако я хотел бы использовать фактический адрес имени хоста докера (чтобы файл конфигурации, который я использую, можно было использовать с внешних компьютеров вне контейнеров докеров), и это странно не работает. Итак, скажем, у меня есть два контейнера:
- кролик
- сообщениепотребитель
Если messageconsumer настроен на доступ к amqp://rabbitmq:5672
, он подключается нормально. Однако мои контейнеры работают, скажем, на хосте docker.mycompany.com
. Если я использую amqp://docker.mycompany.com:5672
в качестве URL-адреса, мой код java messageconsumer не работает с java.net.NoRouteToHostException: Host is unreachable
.
Однако, если я запускаю оболочку в контейнере messageconsumer, ping docker.mycompany.com
работает! Почему оболочка и пинг находят адрес хоста, а не Java? Мой образ основан на openjdk:alpine.
Любая помощь приветствуется!