簡體   English   中英

錯誤:運行 Docker-compose 時連接被拒絕

[英]ERROR: Connection refused while running the Docker-compose up

我使用了 SpringBoot rest api 和 MongoDB。 我有三個不同的數據庫,例如 player-db、game-db 和 score-db。 對於每個服務,我都有 DockerFiles。 當我運行 docker-compose 時出現錯誤:docker-shell 中的錯誤:

 game-docker_1    | 2020-06-12 09:12:03.795  INFO 1 --- [localhost:27017] org.mon
godb.driver.cluster               : Exception in monitor thread while connecting
 to server localhost:27017
game-docker_1    |
game-docker_1    | com.mongodb.MongoSocketOpenException: Exception opening socke
t
game-docker_1    |      at com.mongodb.internal.connection.SocketStream.open(Soc
ketStream.java:70) ~[mongo-java-driver-3.11.2.jar!/:na]
game-docker_1    |      at com.mongodb.internal.connection.InternalStreamConnect
ion.open(InternalStreamConnection.java:128) ~[mongo-java-driver-3.11.2.jar!/:na]

game-docker_1    |      at com.mongodb.internal.connection.DefaultServerMonitor$
ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongo-java-driver-3.1
1.2.jar!/:na]
game-docker_1    |      at java.lang.Thread.run(Thread.java:748) [na:1.8.0_252]
game-docker_1    | Caused by: java.net.ConnectException: Connection refused (Con
nection refused)
game-docker_1    |      at java.net.PlainSocketImpl.socketConnect(Native Method)
 ~[na:1.8.0_252]
game-docker_1    |      at java.net.AbstractPlainSocketImpl.doConnect(AbstractPl
ainSocketImpl.java:350) ~[na:1.8.0_252]
game-docker_1    |      at java.net.AbstractPlainSocketImpl.connectToAddress(Abs
tractPlainSocketImpl.java:206) ~[na:1.8.0_252]
game-docker_1    |      at java.net.AbstractPlainSocketImpl.connect(AbstractPlai
nSocketImpl.java:188) ~[na:1.8.0_252]
game-docker_1    |      at java.net.SocksSocketImpl.connect(SocksSocketImpl.java
:392) ~[na:1.8.0_252]
game-docker_1    |      at java.net.Socket.connect(Socket.java:607) ~[na:1.8.0_2
52]
game-docker_1    |      at com.mongodb.internal.connection.SocketStreamHelper.in
itialize(SocketStreamHelper.java:64) ~[mongo-java-driver-3.11.2.jar!/:na]
game-docker_1    |      at com.mongodb.internal.connection.SocketStream.initiali
zeSocket(SocketStream.java:79) ~[mongo-java-driver-3.11.2.jar!/:na]
game-docker_1    |      at com.mongodb.internal.connection.SocketStream.open(Soc
ketStream.java:65) ~[mongo-java-driver-3.11.2.jar!/:na]
game-docker_1    |      ... 3 common frames omitted
game-docker_1    |
player-docker_1  | 2020-06-12 09:12:03.810  INFO 1 --- [localhost:27017] org.mon
godb.driver.cluster               : Exception in monitor thread while connecting
 to server localhost:27017
player-docker_1  |
player-docker_1  | com.mongodb.MongoSocketOpenException: Exception opening socke
t
player-docker_1  |      at com.mongodb.internal.connection.SocketStream.open(Soc
ketStream.java:70) ~[mongo-java-driver-3.11.2.jar!/:na]
player-docker_1  |      at com.mongodb.internal.connection.InternalStreamConnect
ion.open(InternalStreamConnection.java:128) ~[mongo-java-driver-3.11.2.jar!/:na]

player-docker_1  |      at com.mongodb.internal.connection.DefaultServerMonitor$
ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongo-java-driver-3.1
1.2.jar!/:na]
player-docker_1  |      at java.lang.Thread.run(Thread.java:748) [na:1.8.0_252]
player-docker_1  | Caused by: java.net.ConnectException: Connection refused (Con
nection refused)
player-docker_1  |      at java.net.PlainSocketImpl.socketConnect(Native Method)
 ~[na:1.8.0_252]
player-docker_1  |      at java.net.AbstractPlainSocketImpl.doConnect(AbstractPl
ainSocketImpl.java:350) ~[na:1.8.0_252]
player-docker_1  |      at java.net.AbstractPlainSocketImpl.connectToAddress(Abs
tractPlainSocketImpl.java:206) ~[na:1.8.0_252]
player-docker_1  |      at java.net.AbstractPlainSocketImpl.connect(AbstractPlai
nSocketImpl.java:188) ~[na:1.8.0_252]
player-docker_1  |      at java.net.SocksSocketImpl.connect(SocksSocketImpl.java
:392) ~[na:1.8.0_252]
player-docker_1  |      at java.net.Socket.connect(Socket.java:607) ~[na:1.8.0_2
52]
player-docker_1  |      at com.mongodb.internal.connection.SocketStreamHelper.in
itialize(SocketStreamHelper.java:64) ~[mongo-java-driver-3.11.2.jar!/:na]
player-docker_1  |      at com.mongodb.internal.connection.SocketStream.initiali
zeSocket(SocketStream.java:79) ~[mongo-java-driver-3.11.2.jar!/:na]
player-docker_1  |      at com.mongodb.internal.connection.SocketStream.open(Soc
ketStream.java:65) ~[mongo-java-driver-3.11.2.jar!/:na]
player-docker_1  |      ... 3 common frames omitted
player-docker_1  |
score-docker_1   | 2020-06-12 09:12:03.893  INFO 1 --- [localhost:27017] org.mon
godb.driver.cluster               : Exception in monitor thread while connecting
 to server localhost:27017
score-docker_1   |
score-docker_1   | com.mongodb.MongoSocketOpenException: Exception opening socke
t
score-docker_1   |      at com.mongodb.internal.connection.SocketStream.open(Soc
ketStream.java:70) ~[mongo-java-driver-3.11.2.jar!/:na]
score-docker_1   |      at com.mongodb.internal.connection.InternalStreamConnect
ion.open(InternalStreamConnection.java:128) ~[mongo-java-driver-3.11.2.jar!/:na]

score-docker_1   |      at com.mongodb.internal.connection.DefaultServerMonitor$
ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongo-java-driver-3.1
1.2.jar!/:na]
score-docker_1   |      at java.lang.Thread.run(Thread.java:748) [na:1.8.0_252]
score-docker_1   | Caused by: java.net.ConnectException: Connection refused (Con
nection refused)
score-docker_1   |      at java.net.PlainSocketImpl.socketConnect(Native Method)
 ~[na:1.8.0_252]
score-docker_1   |      at java.net.AbstractPlainSocketImpl.doConnect(AbstractPl
ainSocketImpl.java:350) ~[na:1.8.0_252]
score-docker_1   |      at java.net.AbstractPlainSocketImpl.connectToAddress(Abs
tractPlainSocketImpl.java:206) ~[na:1.8.0_252]
score-docker_1   |      at java.net.AbstractPlainSocketImpl.connect(AbstractPlai
nSocketImpl.java:188) ~[na:1.8.0_252]
score-docker_1   |      at java.net.SocksSocketImpl.connect(SocksSocketImpl.java
:392) ~[na:1.8.0_252]
score-docker_1   |      at java.net.Socket.connect(Socket.java:607) ~[na:1.8.0_2
52]
score-docker_1   |      at com.mongodb.internal.connection.SocketStreamHelper.in
itialize(SocketStreamHelper.java:64) ~[mongo-java-driver-3.11.2.jar!/:na]
score-docker_1   |      at com.mongodb.internal.connection.SocketStream.initiali
zeSocket(SocketStream.java:79) ~[mongo-java-driver-3.11.2.jar!/:na]
score-docker_1   |      at com.mongodb.internal.connection.SocketStream.open(Soc
ketStream.java:65) ~[mongo-java-driver-3.11.2.jar!/:na]
score-docker_1   |      ... 3 common frames omitted
score-docker_1   |
game-docker_1    | 2020-06-12 09:12:06.823  INFO 1 --- [           main] o.s.s.c
oncurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTas
kExecutor'
player-docker_1  | 2020-06-12 09:12:06.895  INFO 1 --- [           main] o.s.s.c
oncurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTas
kExecutor'

docker-compose.yml:

version: "3"
services:
    player-docker:
        build:
            context: ./
            dockerfile: ./src/main/java/spring/multiple/mongo/project/player/DockerFile
        restart: always
        ports:
            - 8080:8080
        depends_on:
            - db
    game-docker:
        build:
            context: ./
            dockerfile: ./src/main/java/spring/multiple/mongo/project/game/DockerFile
        restart: always
        ports:
            - 8081:8080
        depends_on:
            - db1
    score-docker:
        build:
            context: ./
            dockerfile: ./src/main/java/spring/multiple/mongo/project/score/Dockerfile
        restart: always
        ports:
            - 8082:8080
        depends_on:
            - db2 
    db:
        image: mongo
        volumes:
            - mongodata:/data/db
        ports:
            - 27017:27017
        restart: always
        environment:
            MONGO_INITDB_ROOT_DATABASE: player-db
    db1:
        image: mongo
        volumes:
            - mongodata:/data/db1
        ports:
            - 27018:27017
        restart: always
        environment:
            MONGO_INITDB_ROOT_DATABASE: game-db
    db2:
        image: mongo
        volumes:
            - mongodata:/data/db2
        ports:
            - 27019:27017
        restart: always
        environment:
            MONGO_INITDB_ROOT_DATABASE: score-db
volumes:
    mongodata:  

我不知道如何解決這個問題。 我是 Docker 的初學者。

這里的問題在於網絡。 請理解每個容器都是一種單獨的虛擬機。 在這里,您正在嘗試連接到 localhost。 這將不起作用,因為每個容器都將解析為它自己的 Loop back。

您可以通過多種方式解決此問題:

  1. 由於所有容器都連接到同一個 docker 網絡,因此您可以使用容器名稱來解析各自的容器。 所以這里可以使用db:27017連接到MongoDB。 (推薦的)
  2. 由於您已經綁定了所有容器的端口,因此您可以使用主機而不是 localhost。 因此,如果您的主機的私有 IP 為10.0.0.1 ,則使用10.0.0.1:27017連接到 MongoDB。
  3. 使用主機網絡,在這種情況下,端口綁定指令將無用,因為它將被忽略,每個服務都會自動綁定到自己的端口,您可以使用 localhost 連接每個服務(不推薦)

參考:

  1. 網絡概述
  2. 使用橋接網絡
  3. Compose 中的網絡

暫無
暫無

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

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