簡體   English   中英

Spring-boot docker容器中的應用無法連接mongodb docker容器

[英]Spring-boot application in docker container is unable to connect to mongodb docker container

當我嘗試在 docker 上運行我的 spring-boot 應用程序時,它無法連接到在 docker 中運行的 Mongodb 容器。

應用程序.properties

spring.data.mongodb.port=27017
spring.data.mongodb.host=localhost

Dockerfile 申請 spring

FROM openjdk
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

docker-compose.yaml

version: '3'
services:
  mongo:
    image: mongo:latest
    container_name: docker-mongo
    ports:
      - "27017:27017"
  wacaj_docker:
    image: wacaj
    depends_on:
      - mongo
    container_name: wacaj
    build: .
    ports:
      - "8080:8080"

我可以從本地系統連接到 mongodb 容器,但是 spring-application 容器無法連接到 mongo 容器。 而且,如果我在本地運行 spring 應用程序,它能夠連接到運行在 docker 容器中的 mongo。 我無法解決問題。

我嘗試將主機名更改為服務名稱(即 mongo)和容器名稱(即 docker-mongo),但它仍然無法正常工作。

2023-01-07 08:50:03.146  INFO 1 --- [localhost:27017] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server localhost:27017
wacaj         | 
wacaj         | com.mongodb.MongoSocketOpenException: Exception opening socket
wacaj         |         at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:70) ~[mongodb-driver-core-4.6.1.jar!/:na]
wacaj         |         at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:180) ~[mongodb-driver-core-4.6.1.jar!/:na]
wacaj         |         at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:193) ~[mongodb-driver-core-4.6.1.jar!/:na]
wacaj         |         at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:157) ~[mongodb-driver-core-4.6.1.jar!/:na]
wacaj         |         at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
wacaj         | Caused by: java.net.ConnectException: Connection refused
wacaj         |         at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na]
wacaj         |         at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[na:na]
wacaj         |         at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:539) ~[na:na]
wacaj         |         at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:594) ~[na:na]
wacaj         |         at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[na:na]
wacaj         |         at java.base/java.net.Socket.connect(Socket.java:633) ~[na:na]
wacaj         |         at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:107) ~[mongodb-driver-core-4.6.1.jar!/:na]
wacaj         |         at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) ~[mongodb-driver-core-4.6.1.jar!/:na]
wacaj         |         at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-4.6.1.jar!/:na]

您需要更改主機名:

spring.data.mongodb.host=mongo

Docker 使 docker 組合設置中的每項服務都可以在其服務名稱下使用,在您的情況下為mongowacaj_docker

請參閱文檔以獲取更多詳細信息。

暫無
暫無

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

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