Хост приложения Spring Boot на рабочем столе Docker в Windows

Я использую стабильную версию Docker Desktop версии 2.3.0.3, которую я создал в приложении Simple Spring Boot Rest с Get Controller, который печатает HELLO URL: http: // localhost: 8090 / hello

Я создал простой Dockerfile со свойствами, приведенными ниже:

From openjdk:16-jdk
ADD target/Hello.war Hello.war
EXPOSE 8090
ENTRYPOINT ["java","-jar","Hello.war"]

Поэтому, когда я создаю и запускаю этот образ докера, указанный выше API попадает только через мой хост localhost.

Моя команда запуска:

docker run -d -p 8090:8090 docker_spectra

Пожалуйста, помогите, как я могу предоставить этот API удаленному серверу в той же сети, привязав его через IP, как мы это делаем, изменяя server.xml в Tomcat Web Server.

Пожалуйста помоги !!!


person Karan    schedule 01.08.2020    source источник
comment
Вы уверены, что это проблема с докером? Доступны ли некоторые другие службы на вашем компьютере с других компьютеров в той же сети? Может быть, у вас есть брандмауэр, который блокирует этот порт? Ваша команда запуска выглядит нормально.   -  person vrdrv    schedule 01.08.2020
comment
Я также пробовал отключить брандмауэр. Не могли бы вы помочь мне, какой у меня будет IP для порта контейнера. Это будет мой системный ipv4 или контейнерный ip (172. Что-то) или любой другой ip, который мы видим при ipconfig.   -  person Karan    schedule 01.08.2020
comment
Если вы сделаете -p 8090:8090, он привяжет порт 8090 контейнера к порту 8090 вашего хоста. Таким образом, для других ПК в сети это будет IP-адрес вашего ПК, на котором запущен контейнер докера.   -  person vrdrv    schedule 01.08.2020
comment
Что вы получаете, когда выполняете curl для своего IP-адреса на порту 8090?   -  person Sergio Santiago    schedule 03.08.2020


Ответы (1)


С приведенной ниже конфигурацией команд Dockerfile и docker run. Я могу использовать API, размещенный в облаке Azure.

FROM openjdk:11
ADD target/leavemodule*.jar leavemodule.jar
ENTRYPOINT ["java","-jar","/leavemodule.jar"]

и

docker run -d -p 8080:8080 --name leavemodule-service anandaili/leavemodule-service

Вы можете увидеть полное руководство по созданию образа докера и его развертыванию здесь leavemodule, и вы можете нажать на интерфейс swagger: http://13.95.3.6:8080/swagger-ui.html

person anandaili    schedule 01.08.2020
comment
Спасибо за ваш ответ и, пожалуйста, прочтите мой вопрос, я столкнулся с этой проблемой в Windows 10, в которой запущено приложение для настольных компьютеров Docker, и вы дали кое-что, связанное с облачной платформой. Я хочу получить то же самое с моим IP-адресом хоста или IP-адресом контейнера или любым другим IP-адресом, к которому можно получить доступ другим в той же сети - person Karan; 01.08.2020
comment
@Karan, в windows докер работает на маленькой виртуальной машине и внутри будут работать контейнеры. Поэтому, если мы сделаем -p hostPort: containerPort, он может быть доступен виртуальной машине вместо ПК с Windows. - person anandaili; 04.08.2020
comment
ты пробовал этот 0.0.0.0:Port? - person anandaili; 04.08.2020