Docker не показывает приложение вне контейнера при использовании сетевого режима хоста, однако он хорошо работает в контейнере - PullRequest
0 голосов
/ 29 мая 2020

У меня есть приложение для весенней загрузки, которое внутренне вызывает redis. У меня redis работает на 6379 внутри контейнера docker (также доступен внешний контейнер через клиент redis). Но когда я открываю приложение, как показано ниже, оно жалуется на сбой подключения redis. Работает на 8086

docker run -d --name containerName -p 8086: 8086 containerName: version Но приложение доступно из браузера как http://localhost: 8086 Однако при запуске, как показано ниже, с --net = host, он отлично работает с предупреждением, так как ПРЕДУПРЕЖДЕНИЕ: опубликованные порты отбрасываются при использовании сетевого режима хоста

docker run --rm -it -d --net = host --publi sh -all = true --name containerName containerName: version

Но приложение недоступно из браузера http://localhost: 8086

Трассировка стека исключений

Исключение в потоке «пул-2-поток-1» org.springframework.data.redis.RedisConnectionFailureException: не удается получить соединение Jedis; вложенное исключение: redis.clients.jedis.exceptions.JedisConnectionException: не удалось получить ресурс из пула в org.springframework.data.redis.connection.jedis.JedisConnectionFactory.fetchJedisConnector (JedisConnectionFactory. java: 282) atrame. .data.redis.connection.jedis.JedisConnectionFactory.getConnection (JedisConnectionFactory. java: 476) в org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection (RedisConnectionUtils.

: * 134) 1024 java 134) Вызвано: java. net .ConnectException: соединение отклонено (соединение отклонено) at java .base / java. net .PlainSocketImpl.socketConnect (собственный метод)

Примечание: я использую docker контейнер на windows машине

1 Ответ

0 голосов
/ 29 мая 2020

У меня redis и контейнер приложений работают отдельно, вот решение

1: redis работает на 6379 docker run --rm -it --name redis -p 6379: 6379 redis

2: Моя служба, которая использует redis под капотом, должна настроить хост redis как spring.redis.host = redis Здесь redis - это не что иное, как имя контейнера redis

docker run - rm -d --link redis --name reader -p 8086: 8086 imageName: version

Я могу получить доступ к приложению из браузера http://localhost: 8086 здесь --link redis выполняет сопоставление хоста redis.

...