Как запустить java-приложение Undertow с докером

Я использую undertow для своих приложений с докером.

Я могу сделать следующее

  1. создать толстую банку

  2. создать образ докера из этого

  3. Запустите этот образ докера

  4. Листинг 8080 и добавление EXPOSE 8080 в файл Docker

  5. сверните мой URL-адрес ВНУТРИ КОНТЕЙНЕРА, curl localhost:8080/sample

Я столкнулся с какой-то странной проблемой,

И мой файл компоновки

version: '2'
services:
  login:
    image: my-image
    ports:
     - "8080:8080"

с портом 8080 я не могу получить доступ к URL-адресу.

Мой докерфайл

FROM openjdk:8-jre
COPY ./target/*-with-dependencies.jar /jars/service-jar.jar
EXPOSE 8080
CMD java  -cp /jars/service-jar.jar my.Main 

Мой слушатель подводного течения

Undertow server = Undertow.builder()
        .addHttpListener(8080, "localhost")
        .setHandler(path)
        .build();

У меня есть какая-то ссылка в google, которая все еще не может заставить ее работать

http://lists.jboss.org/pipermail/undertow-dev/2014-October/000999.html


person vimal prakash    schedule 14.01.2017    source источник


Ответы (2)


устранена проблема путем прослушивания IP-адреса контейнера Docker.

Я изменил своего слушателя на

Undertow server = Undertow.builder()
        .addHttpListener(8080, InetAddress.getLocalHost().getHostAddress())
        .setHandler(path)
        .build();

Теперь он работает нормально.

«Внешний IP-адрес — это нечто совершенно другое. Таким образом, вы должны установить хост-сервер для отвода в качестве внутреннего IP-адреса в Iptables, созданном докером».

Я пропустил эту строку в своей справочной ссылке (http://lists.jboss.org/pipermail/undertow-dev/2014-October/000999.html).

Мой босс узнает об этом.

person vimal prakash    schedule 14.01.2017
comment
Имейте в виду, однако, что вы столкнетесь с проблемами, если будете использовать несколько сетей докеров для этого контейнера. В этом сценарии вы должны использовать .addHttpListener(8080,"0.0.0.0"), что в основном говорит: слушайте все IP-адреса. - person ShrimpPhaser; 14.01.2017
comment
@ShrimpPhaser, спасибо за предложение. это тоже работает. - person vimal prakash; 14.01.2017

Как вы запускаете образ докера? Вы публикуете порт?

docker run -p 8080:8080 ...

Дополнительная документация

person rkosegi    schedule 14.01.2017