You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot应用连接Docker中MongoDB容器失败求助

Spring Boot容器无法连接Docker中的MongoDB

问题背景

我开发了一个简单的Spring Boot应用,需要连接部署在Docker容器内的MongoDB,但尝试多种配置组合后均无法成功连接,以下是我的配置细节及报错情况:

application.properties 配置尝试

第一种配置:

spring.data.mongodb.host=docker-mongo-service # 我已尝试0.0.0.0、127.0.0.1和localhost,能生成JAR文件但容器运行时连接MongoDB失败
spring.data.mongodb.port=27017
spring.data.mongodb.database=users
server.port=8080

第二种配置:

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27018
spring.data.mongodb.database=users
server.port=8080

该配置在IntelliJ IDEA或Postman中运行应用时可正常连接数据库,但在Docker中运行时连接失败。

localhost:27018 对应的报错信息

INFO 1 --- [localhost:27018] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server localhost:27018
2023-03-07T10:49:19.475466464Z 
2023-03-07T10:49:19.475472102Z com.mongodb.MongoSocketOpenException: Exception opening socket
2023-03-07T10:49:19.475476001Z  at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:73) ~[mongodb-driver-core-4.8.2.jar!/:na]
2023-03-07T10:49:19.475480478Z  at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:183) ~[mongodb-driver-core-4.8.2.jar!/:na]
2023-03-07T10:49:19.475484289Z  at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:198) ~[mongodb-driver-core-4.8.2.jar!/:na]
2023-03-07T10:49:19.475488368Z  at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:158) ~[mongodb-driver-core-4.8.2.jar!/:na]
2023-03-07T10:49:19.475500487Z  at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
2023-03-07T10:49:19.475504485Z Caused by: java.net.ConnectException: Connection refused
2023-03-07T10:49:19.475508415Z  at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na]
2023-03-07T10:49:19.475512151Z  at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[na:na]
2023-03-07T10:49:19.475515746Z  at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:539) ~[na:na]
2023-03-07T10:49:19.475519708Z  at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:594) ~[na:na]
2023-03-07T10:49:19.475523952Z  at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[na:na]
2023-03-07T10:49:19.475528048Z  at java.base/java.net.Socket.connect(Socket.java:633) ~[na:na]
2023-03-07T10:49:19.475531926Z  at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:107) ~[mongodb-driver-core-4.8.2.jar!/:na]
2023-03-07T10:49:19.475535871Z  at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:82) ~[mongodb-driver-core-4.8.2.jar!/:na]
2023-03-07T10:49:19.475539944Z  at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:68) ~[mongodb-driver-core-4.8.2.jar!/:na]
2023-03-07T10:49:19.475544141Z  ... 4 common frames omitted

MongoDB容器配置

因本地27017端口已运行MongoDB,故将容器的27017端口映射到localhost:27018:

Port 27017    0.0.0.0:27018

Dockerfile

FROM openjdk:latest

COPY target/*.jar app.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "app.jar"]

docker-mongo-service:27017 对应的报错信息

INFO 4920 --- [o-service:27017] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server docker-mongo-service:27017

com.mongodb.MongoSocketException: docker-mongo-service
    at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:217) ~[mongodb-driver-core-4.8.2.jar:na]
    at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:78) ~[mongodb-driver-core-4.8.2.jar:na]
    at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:68) ~[mongodb-driver-core-4.8.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:183) ~[mongodb-driver-core-4.8.2.jar:na]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:198) ~[mongodb-driver-core-4.8.2.jar:na]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:158) ~[mongodb-driver-core-4.8.2.jar:na]
    at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
Caused by: java.net.UnknownHostException: docker-mongo-service
    at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:801) ~[na:na]
    at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:887) ~[na:na]
    at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1509) ~[na:na]
    at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1367) ~[na:na]
    at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1301) ~[na:na]
    at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:209) ~[mongodb-driver-core-4.8.2.jar:na]
    ... 6 common frames omitted

已尝试的主机地址

  • 127.0.0.1
  • 0.0.0.0
  • localhost
  • docker-mongo-service(MongoDB容器名称)

注:无法使用Docker-Compose。

内容的提问来源于stack exchange,提问作者MakeBugsNotWar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:12:04