簡體   English   中英

在 Docker-Compose 中使用 Spring 無法連接到 MongoDB

[英]Unable to connect to MongoDB using Spring Boot in Docker-Compose

我正在嘗試在 Docker Compose 中運行我的應用程序和 MongoDB 容器,但出現以下錯誤:

2021-03-17 13:30:08.776  INFO 1 --- [l'}-mongo:27018] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server mongo:27018


com.mongodb.MongoSocketOpenException: Exception opening socket
app      |  at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:70) ~[mongodb-driver-core-4.1.1.jar!/:na]
app      |  at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:143) ~[mongodb-driver-core-4.1.1.jar!/:na]
app      |  at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:188) ~[mongodb-driver-core-4.1.1.jar!/:na]
app      |  at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:144) ~[mongodb-driver-core-4.1.1.jar!/:na]
app      |  at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
app      | Caused by: java.net.ConnectException: Connection refused (Connection refused)
app      |  at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:na]
app      |  at java.base/java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) ~[na:na]
app      |  at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) ~[na:na]
app      |  at java.base/java.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[na:na]
app      |  at java.base/java.net.SocksSocketImpl.connect(Unknown Source) ~[na:na]
app      |  at java.base/java.net.Socket.connect(Unknown Source) ~[na:na]
app      |  at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:78) ~[mongodb-driver-core-4.1.1.jar!/:na]
app      |  at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) ~[mongodb-driver-core-4.1.1.jar!/:na]
app      |  at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-4.1.1.jar!/:na]

docker-compose.yml

version: '3'

services:
  app:
    build:
      context: .
    container_name: app
    hostname: app
    depends_on:
      - mongo
    ports:
      - "8081:8081"
    environment:
      - SPRING_DATA_MONGODB_HOST=mongo
      - SPRING_DATA_MONGODB_PORT=27018
      - SPRING_DATA_MONGODB_DATABASE=tfood

  mongo:
    image: 'mongo:latest'
    container_name: mongo
    hostname: mongo
    volumes:
      - ./data/mongo:/data/db
    ports:
      - "27018:27017"

互聯網上與我遇到同樣問題的每個人總是在主機名方面遇到一些問題,我的情況不是這樣。 從錯誤日志中我看到 docker 獲取連接數據,只是無法連接

如果您想從 Windows/Mac/Linux 桌面連接到 MongoDB,這會暴露主機上的端口27018

  ports:
      - "27018:27017"

在 Docker 網絡內部,暴露給其他 Docker 容器的端口是27017 因此,您需要將其更改為27017

SPRING_DATA_MONGODB_PORT=27017

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM