'SOLVED Accessing MongoDB from spring boot container
I'm trying to connect Mongodb which is installed on my windows from a spring boot container but I'm facing :
2022-02-26 00:08:52.868 INFO 1 --- [localhost:27017] org.mongodb.driver.cluster : Exception in monitor thread while connecting to server localhost: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]
-project | at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:126) ~[mongodb-driver-core-3.8.2.jar!/:na]
-project | at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-3.8.2.jar!/:na]
-project | at java.lang.Thread.run(Thread.java:748) [na:1.8.0_212]
-project | Caused by: java.net.ConnectException: Connection refused (Connection refused)
-project | at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_212]
-project | at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_212]
-project | at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_212]
-project | at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_212]
-project | at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_212]
-project | at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_212]
-project | at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:64) ~[mongodb-driver-core-3.8.2.jar!/:na]
-project | at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:62) ~[mongodb-driver-core-3.8.2.jar!/:na]
-project | ... 3 common frames omitted
Here is my docker-compose file:
version: '3'
services:
bootloader:
build: ./
container_name: project
ports:
- "8080:8080"
links:
- host.docker.internal
volumes:
- /tmp/
Here is my application.properties file:
spring.data.mongodb.database=IODATABSE
spring.data.mongodb.port=27017
#spring.data.mongodb.host=localhost
spring.data.mongodb.authentication-database=admin
logging.level.org.springframework.data.mongodb.core.MongoTemplate= DEBUG
#spring.data.mongodb.authentication-database=admin
spring.data.mongodb.host=host.docker.internal
#spring.data.mongodb.port=27017
spring.data.mongodb.password=PASSWORD
spring.data.mongodb.username=USERNAME
So I'm wondring if there is a way to solve this, and Thank you
Solution 1:[1]
I solved it by this:
environment:
- SPRING_DATA_MONGODB_URI=mongodb://host.docker.internal:27017
Added Mongodb Java Driver on MongoDB pom.xml:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-core</artifactId>
<version>4.5.0</version>
</dependency>
and on my parent pom.xml
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-core</artifactId>
<version>3.8.2</version>
</dependency>
Refering to MongoDB Documentation on Java drivers: https://docs.mongodb.com/drivers/reactive-streams/
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | BAKHALED Ibrahim |
