簡體   English   中英

Springboot mongo 異常與 Docker

[英]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.

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