Почему я не могу получить доступ к своим конечным точкам в Docker?

Я запускаю свой контейнер Docker и ожидаю достичь его конечных точек.

В этом вопросе я предоставил свой Dockerfile и gradle.build. Как улучшить файл gradle.build?

Образ Docker создан успешно, и когда я запускаю его, я вижу, как запускается Spring Boot, включая «Spring Boot logo» и Tomcat started on port(s): 9090 (http) with context path ''.

Запускаю свой образ с pavelpolubentcev$ docker run -i -t -e SERVER_PORT=9090 messenger-auth-auth

Тем не менее, я не могу получить доступ к своим конечным точкам, когда я пробую http://localhost:9090, а не "Could not get any response".

Когда я запускаю docker ps -a, я вижу, что мой образ работает:

9d31b3e2aa63 messenger-auth-auth "java -jar /app/mess…" 6 minutes ago Up 6 minutes 8080/tcp practical_nightingale

Но почему-то вижу еще и 8080/tcp

Что мне делать, чтобы запустить его правильно и наконец получить ответ от своих конечных точек?

Почему я не могу получить доступ к своим конечным точкам в Docker?

Почему я не могу получить доступ к своим конечным точкам в Docker?

Спасибо за помощь, я ценю это, мне действительно нужно решить проблему.

вам нужно опубликовать свои порты с docker run -p 8080:8080

Ivan Aracki 05.01.2019 22:44

Вы удостоверились, что жестко запрограммировали специальный IP-адрес 0.0.0.0 в коде Java или в файле application.properties?

ErikMD 05.01.2019 22:44

Нет, я ничего не кодировал

Pasha 05.01.2019 22:44

Хорошо, поэтому я подозреваю, что ваш вопрос является дубликатом Как мне получить доступ к весеннему приложению, работающему в контейнере докера? ... в любом случае, комментарий @ IvanAracki также актуален: вам нужно как прослушивать 0.0.0.0 внутри контейнера, так и публиковать порт с соответствующей опцией.

ErikMD 05.01.2019 22:46
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
2 901
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Сопоставьте порт контейнера с внешним портом: docker run -p 9090:9090 ...
Первый порт - это внешний порт (к которому вы хотите получить доступ сейчас с хост-машины), а второй - внутренний порт (порт на контейнере). Вы можете указать такой же внешний порт или нет.

Ответ принят как подходящий

8080/tcp, который вы видите на выходе при перечислении запущенных контейнеров, определен в EXPOSE в файле образа Docker. Но на самом деле эта инструкция не публикует порт.

Вы должны сопоставить порт вашего хоста (машины) с портом контейнера, чтобы пересылать TCP / UDP от хоста к контейнеру.

Тем не менее, в вашем случае команда для запуска контейнера:

docker run -e SERVER_PORT=9090 -p 9090:9090 messenger-auth-auth

Другие вопросы по теме