0

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
David Maze
  • 130,717
  • 29
  • 175
  • 215
  • Where is MongoDB actually running? Whatever context it's in, it will believe it's `localhost`, whether that's in a container or a remote cluster or outside a container on your host machine or somewhere else -- saying it's "on localhost" doesn't really mean anything. What have you already tried and what problems are you running into? – David Maze Oct 19 '22 at 14:27
  • Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. – Community Oct 20 '22 at 03:34
  • @DavidMaze i hope i am more clear about my problem now – Madhu Sundar Oct 20 '22 at 11:08
  • Have you looked at [Connect to host mongodb from docker container](https://stackoverflow.com/questions/45461017/connect-to-host-mongodb-from-docker-container), or the more general [From inside of a Docker container, how do I connect to the localhost of the machine?](https://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container-how-do-i-connect-to-the-localhost-of-the-mach) – David Maze Oct 20 '22 at 11:19

0 Answers0