[英]How to connect between Spring Boot and MySQL on Docker with Docker-compose?
[英]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.