使用docker-compose部署时Spring Boot应用无法连接MongoDB容器求助
问题排查与修复方案
核心错误原因
你的配置存在端口不匹配问题:MongoDB官方镜像默认监听端口为27017,你既没有修改MongoDB容器内的监听端口,又配置应用连接27011端口,同时端口映射也指向了容器内不存在的监听端口,最终导致连接被拒绝。
具体修复步骤
- 修正
docker-compose.yml中MongoDB服务的端口配置
将mongodb服务下的ports字段替换为如下内容,实现宿主机27011端口映射到容器内部MongoDB默认监听的27017端口,兼容你本地非容器化服务的连接习惯:
ports: - 27011:27017
- 修正
application.properties中的MongoDB连接端口
同Docker网络内的服务通信直接使用容器内部端口,无需走宿主机映射端口,修改端口配置为:
spring.data.mongodb.port=27017
- (可选)修复服务端口映射问题
从你提供的启动日志可见,Spring Boot内置Tomcat默认监听8080端口,当前docker-compose中配置的8091:8091端口映射无法正常生效,修改为:
ports: - 8091:8080
- (可选)优化启动顺序避免偶发连接失败
depends_on仅保证容器启动顺序,不会等待MongoDB初始化完成再启动应用,可添加健康检查配置规避该问题:
在mongodb服务下新增健康检查规则:
healthcheck: test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet interval: 5s timeout: 5s retries: 3
修改idv-service的depends_on配置为:
depends_on: mongodb: condition: service_healthy
内容的提问来源于stack exchange,提问作者EyupCingel
相关产品推荐
相关产品推荐

