[英]SpringBoot in Docker not connecting to Mongo and throws Exception
[英]Springboot mongo exception with Docker
我是 docker 的新手,並嘗試將 spring 啟動應用程序與在 docker 上運行的 mongo db 連接,我在端口 27017 有:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
我沒有在 application.properties 中指定任何內容。 以下是 spring 啟動失敗的日志:
com.mongodb.MongoSocketOpenException: Exception opening socket
at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:67) ~[mongodb-driver-core-3.8.2.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:126) ~[mongodb-driver-core-3.8.2.jar:na]
at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-3.8.2.jar:na]
at java.base/java.lang.Thread.run(Thread.java:830) ~[na:na]
Caused by: java.net.ConnectException: Connection refused: no further information
at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na]
at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:579) ~[na:na]
at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:549) ~[na:na]
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[na:na]
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:339) ~[na:na]
at java.base/java.net.Socket.connect(Socket.java:603) ~[na:na]
at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:64) ~[mongodb-driver-core-3.8.2.jar:na]
at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:62) ~[mongodb-driver-core-3.8.2.jar:na]
以及來自 mongodb(docker) 的日志
2020-05-30T00:31:55.387+0000 I NETWORK [listener] Listening on /tmp/mongodb-27017.sock
2020-05-30T00:31:55.388+0000 I NETWORK [listener] Listening on 0.0.0.0
2020-05-30T00:31:55.391+0000 I NETWORK [listener] waiting for connections on port 27017
2020-05-30T00:31:55.405+0000 I INDEX [LogicalSessionCacheRefresh] index build: done building index _id_ on ns config.system.sessions
2020-05-30T00:31:55.425+0000 I INDEX [LogicalSessionCacheRefresh] index build: starting on config.system.sessions properties: { v: 2, key: { lastUse: 1 }, name: "lsidTTLIndex", ns: "config.system.sessions", expireAfterSeconds: 1800 } using method: Hybrid
2020-05-30T00:31:55.426+0000 I INDEX [LogicalSessionCacheRefresh] build may temporarily use up to 200 megabytes of RAM
2020-05-30T00:31:55.426+0000 I INDEX [LogicalSessionCacheRefresh] index build: collection scan done. scanned 0 total records in 0 seconds
2020-05-30T00:31:55.429+0000 I INDEX [LogicalSessionCacheRefresh] index build: inserted 0 keys from external sorter into index in 0 seconds
2020-05-30T00:31:55.431+0000 I INDEX [LogicalSessionCacheRefresh] index build: done building index lsidTTLIndex on ns config.system.sessions
2020-05-30T00:31:55.434+0000 I SHARDING [LogicalSessionCacheReap] Marking collection config.transactions as collection version: <unsharded>
2020-05-30T00:31:56.006+0000 I SHARDING [ftdc] Marking collection local.oplog.rs as collection version: <unsharded>
有人可以幫我嗎?
謝謝!
上述問題的解決方案:-
By getting the Windows 2004 version upgrade and then installing Docker Desktop for Windows(after uninstalling the Docker Toolbox legacy one, which was required for previous windows versions).
我建議您通過docker-compose
運行您的容器,並檢查下面的docker-compose.yml
以供參考。
version: "3"
services:
api-database:
image: mongo:3.2.4
container_name: "api-database"
ports:
- 27017:27017
command: --smallfiles
api:
image: XXXX
ports:
- XXXX:XXXX
links:
- api-database
使用 docker-compose 中定義的服務名稱使用 spring 配置屬性配置 mongodb 主機名。
spring.data.mongodb.host=api-database
然后運行
docker-compose up
參考:- https://nirajsonawane.github.io/2019/12/16/Spring-Boot-Mongodb-Docker-Compose/
I was able to resolve this issue by getting the Windows 2004 version upgrade and then installing Docker Desktop for Windows(after uninstalling the Docker Toolbox legacy one, which was required for previous windows versions).
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.