I have a spring boot application which i have containerized.
I want to use ngnix for reverse proxy and Hashicorp-Consul for service discovery.
Now i need to connect my spring boot application container to mongo db which is NOT RUNNING AS A CONTAINER but runs as a service.
Whenever i try to connect to mongodb from the container i am getting the following exception
2022-10-19 12:35:30.074 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:70) ~[mongodb-driver-core-4.6.1.jar!/:na]
at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:180) ~[mongodb-driver-core-4.6.1.jar!/:na]
at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:193) ~[mongodb-driver-core-4.6.1.jar!/:na]
at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:157) ~[mongodb-driver-core-4.6.1.jar!/:na]
at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:na]
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412) ~[na:na]
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255) ~[na:na]
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237) ~[na:na]
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:na]
at java.base/java.net.Socket.connect(Socket.java:609) ~[na:na]
at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:107) ~[mongodb-driver-core-4.6.1.jar!/:na]
at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) ~[mongodb-driver-core-4.6.1.jar!/:na]
at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-4.6.1.jar!/:na]
... 4 common frames omitted
docker-compose.yml
:
version: "3.8"
services:
consul:
image: consul:1.6.3
command: agent -server -ui -node=server1 -bootstrap-expect=1 -client=0.0.0.0
ports:
- "8500:8500"
- "8600:8600/udp"
networks:
- consul-net
nginx:
container_name: nginx
image: nginx:latest
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
depends_on:
- fc-projects
fc-projects:
image: fc-projects:1.0
container_name: fc-projects
ports:
- "7010:7000"
extra_hosts:
- "host.docker.internal:host-gateway"
bootstrap.yml
spring:
application:
name: fc-projects
cloud:
consul:
enabled: true
host: host.docker.internal
port: 8500
data:
mongodb:
database: firecrowd-dev
port: 27017
host: host.docker.internal
application.yml
server:
port: 7000
spring:
cloud:
consul:
discovery:
instanceId: ${spring.application.name}:${server.port}:${random.value}
management:
endpoints:
web:
exposure:
include: "*"
logging.level:
org.springframework.cloud:
consul: DEBUG