Невозможно получить доступ к MongoDb из Spring Boot App Deploy в Docker контейнере - PullRequest
0 голосов
/ 24 апреля 2020

Я читал всевозможные ответы для подключения моей локальной MongoDB из загрузочного приложения Spring, которое развернуто в Docker контейнере. Но я получаю сообщение об ошибке ниже:

2020-04-24 06:39:29.425  INFO 1 --- [           main] org.mongodb.driver.cluster               : Adding discovered server 127.0.0.1:27017 to client view of cluster
2020-04-24 06:39:29.542  INFO 1 --- [127.0.0.1:27017] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server 127.0.0.1:27017

com.mongodb.MongoSocketOpenException: Exception opening socket
        at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:67) ~[mongodb-driver-core-3.8.2.jar!/:na]
        at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:126) ~[mongodb-driver-core-3.8.2.jar!/:na]
        at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-3.8.2.jar!/:na]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_252]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_252]
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_252]
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_252]
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_252]
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_252]
        at java.net.Socket.connect(Socket.java:607) ~[na:1.8.0_252]
        at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:64) ~[mongodb-driver-core-3.8.2.jar!/:na]
        at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:62) ~[mongodb-driver-core-3.8.2.jar!/:na]
        ... 3 common frames omitted

2020-04-24 06:39:30.833  INFO 1 --- [           main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]

Если я запускаю это весеннее загрузочное приложение из контейнера docker, оно работает нормально. Но изнутри контейнера docker он не может получить доступ к моей mongoDB, которая находится вне контейнера docker. Вот как я запускаю docker контейнер:

docker build -f .\Dockerfile -t dockerspringboot .
docker run -p 8085:8080 dockerspringboot

Это мой Dockerfile:

FROM openjdk:8
ADD build/libs/SpringBoot-1.0.jar SpringBoot-1.0.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "SpringBoot-1.0.jar"]

-Я пытался изменить IPaddress на 0.0.0.0 и 127.0.0.1, но нет use.

-Я попытался изменить файл mondod.conf с параметрами, указанными ниже / без комментариев:

# network interfaces
net:
  #port: 27017
  bindIp: 0.0.0.0
#  bindIpAll: true
#  bindIp: 127.0.0.1

-Я попытался изменить настройки брандмауэра, чтобы все программы также имели доступ к процессу docker бэкэнда .

Также попытался изменить локальные IP-адреса с помощью команды ipconfig, но все равно не повезло.

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Добавьте --network="host" к вашей команде docker run. Тогда ваш docker контейнер сможет получить доступ к localhost:27017

0 голосов
/ 24 апреля 2020

Вы должны указать права доступа к базе данных, если они существуют, попробуйте это:

spring.data.mongodb.authentication-database=admin
spring.data.mongodb.database=app1
spring.data.mongodb.host=host.docker.internal
spring.data.mongodb.port=27017
spring.data.mongodb.password=PASSWORD
spring.data.mongodb.username=USERNAME
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...