порты докера недоступны - PullRequest
       4

порты докера недоступны

0 голосов
/ 30 декабря 2018

У меня есть проект spring-config-sever, который я пытаюсь запустить через Docker.Я могу запустить его из командной строки, и другие мои службы и браузер успешно подключаются через:

http://localhost:8980/aservice/dev

Однако, если я запускаю его через Docker, вызовтерпит неудачу.

Мой конфигурационный сервер имеет Dockerfile:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE=build/libs/my-config-server-0.1.0.jar
ADD ${JAR_FILE} my-config-server-0.1.0.jar
EXPOSE 8980
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/my-config-server-0.1.0.jar"]

Я строю через:

Сборка Docker -t my-config-server.

Я запускаю его через:

docker run my-config-server -p 8980: 8980

И затем я подтверждаю, что он работаетчерез

docker ps

CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS               NAMES
1cecafdf99fe        my-config-server   "java -Djava.securit…"   14 seconds ago      Up 13 seconds       8980/tcp            suspicious_brahmagupta

Когда я запускаю его через Docker, просмотр завершается с ошибкой «ERR_CONNECTION_REFUSED», а мои службы вызова завершаются с помощью:

Не удалось найти PropertySource: ошибка ввода-вывода при запросе GET для "http://localhost:8980/aservice/dev": Соединение отклонено (соединение отклонено);

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Добавление полного ответа на основе комментариев.

Сначала вы должны указать -p перед именем изображения.docker run -p 8980:8980 my-config-server.

Во-вторых, простая настройка localhost с портом хоста не заставит ваш контейнер my-service общаться с другим контейнером.locahost в контейнере внутри себя (не хоста).Вам нужно будет использовать соответствующую сетевую модель докера , чтобы оба контейнера могли общаться друг с другом.

Если вы работаете в Linux, по умолчанию используется значение Bridge, поэтому вы можете настроить контейнер my-config-server ip docker inspect {containerIp-of-config-server} в качестве конечной точки сервера конфигурации.

Пример, если ваша my-config-server ip равен 172.17.0.2, тогда конечная точка равна - http://172.17.0.2:8980/

spring:
  cloud:
    config:
      uri: http://172.17.0.2:8980

Просто следуйте документации докера, чтобы немного лучше понять, как работает сеть.https://docs.docker.com/network/network-tutorial-standalone/ https://docs.docker.com/v17.09/engine/userguide/networking/

Если вы хотите раскрутить оба контейнера, используя docker-compose, вы можете связать оба контейнера, используя имя службы.Просто следуйте Сеть в Compose .

0 голосов
/ 30 декабря 2018

Я мог представить, что приложение слушает только на localhost, т.е. 127.0.0.1.

Возможно, вы захотите установить для свойства server.address значение 0.0.0.0.Тогда порт 8980 также должен быть доступен извне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...