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

Docker部署Maven多模块Spring Boot项目连接MongoDB报Exception opening socket异常

问题根因

  1. 环境变量引用语法错误:Spring Boot配置文件中读取环境变量的正确语法为${变量名},你当前使用的$(MONGO_HOST)是Shell语法,Spring Boot无法识别,导致配置未生效,程序默认连接localhost:27017,和日志输出的MongoDB连接地址完全吻合。
  2. MongoDB容器网络配置错误:docker-compose.yml中MongoDB服务配置的network_mode: host仅在Linux系统下生效,Windows/Mac系统的Docker Desktop不支持该模式,会导致同栈的其他服务无法通过服务名mongodb访问MongoDB实例。
  3. 单元测试提前执行:你贴出的日志为NoteControllerTest单元测试的运行日志,执行mvn install时会自动运行单元测试,此时Docker服务尚未启动,测试环境也没有注入MONGO_HOST变量,必然会触发连接失败错误。

修复方案

  • 修改application.properties配置:将spring.data.mongodb.host=$(MONGO_HOST)替换为spring.data.mongodb.host=${MONGO_HOST}
  • 修改docker-compose.yml配置:删除mongodb服务下的network_mode: host配置项,Docker Compose默认会创建内部网桥网络,同网络内的服务可直接通过服务名互访
  • 打包时跳过单元测试:执行Maven打包命令改为mvn install -DskipTests,避免容器启动前执行测试用例
  • 清理旧容器后重新启动:依次执行docker-compose down -v、docker-compose up --build启动服务

内容的提问来源于stack exchange,提问作者Antonio Jagodić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:48:01