繁体   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