Ошибка времени ожидания подключения Spring boot mongodb - PullRequest
0 голосов
/ 07 августа 2020

Я изучаю mongodb, и в основном у меня есть простое приложение для весенней загрузки, которое подключается к mon go db для сохранения информации.

Свойства моего приложения следующие:

spring.data.mongodb.port=27017
spring.data.mongodb.database=emailDb
spring.data.mongodb.username=admin-user123
spring.data.mongodb.password=admin-password123
spring.data.mongodb.authentication-database=admin

Итак, я создал файл docker -compose, чтобы связать db с моим приложением для весенней загрузки:

version: '3.2'

volumes:
  mongodb_data:     #creates mount point on docker for mongodb
    driver: local

# config postgres, Keycloak & Mongodb
services:
  servicel-component:
    image: servicel-component
    networks:
      test:
        aliases:
          - email
    environment:
      SPRING_PROFILES_ACTIVE: message
      SPRING_RABBITMQ_HOST: rabbitmq
    ports:
      - 8080:8080       # port for postgres
    depends_on:
      - rabbitmq

  rabbitmq:
    image: rabbitmq:3-management
    environment:
      RABBITMQ_DEFAULT_USER: guest
      RABBITMQ_DEFAULT_PASS: guest
    ports:
      - "5672:5672"
      - "15672:15672"
    networks:
      test:
        aliases:
          - rabbitmq
  mongodb:
    image: mongo:latest
    networks:
      test:
        aliases:
          - mongodb
    environment:
      MONGO_INITDB_ROOT_USERNAME: admin-user123
      MONGO_INITDB_ROOT_PASSWORD: admin-password123
    restart: always
    ports:
      - 27017:27017
    volumes:
      - mongodb_data:/data/db
networks:
  test:
    external: true

Когда вы выполняете docker -compose, запускается следующее исключение:

2020-08-07 09:35:23.063 INFO 1 --- [ main] org.mongodb.driver.cluster : Adding discovered server localhost:27017 to client view of cluster

2020-08-07 09:35:23.143 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-3.11.2.jar!/:na]

at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:128) ~[mongodb-driver-core-3.11.2.jar!/:na]

at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-3.11.2.jar!/:na]

at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na]

Caused by: java.net.ConnectException: Connection refused

at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na]

at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:589) ~[na:na]

at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[na:na]

at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[na:na]

at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333) ~[na:na]

at java.base/java.net.Socket.connect(Socket.java:648) ~[na:na]

at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:64) ~[mongodb-driver-core-3.11.2.jar!/:na]

at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) ~[mongodb-driver-core-3.11.2.jar!/:na]

at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-3.11.2.jar!/:na]

... 3 common frames omitted

Когда я не запускаю servicel-component на docker, просто запустите его как mvn spring-boot: запустите и запустите mongodb на docker, он отлично работает. Есть идеи, что мне здесь не хватает, пожалуйста?

1 Ответ

0 голосов
/ 07 августа 2020

Вы не можете использовать localhost, это относится к самому контейнеру. Вам нужно использовать IP-адрес хоста или использовать docker DNS, если контейнеры находятся в одной сети (не ваш случай).

2020-08-07 09:35:23.143 INFO 1 --- [localhost:27017] org.mongodb.driver.cluster : Exception in monitor thread while connecting to server localhost:27017
...