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

使用Docker Compose连接Spring应用与MongoDB时遇连接拒绝问题求助

解决方案

1. 修复端口不匹配问题

错误日志显示应用在尝试连接mongodb:27070,但你配置的端口是27017,说明配置被覆盖:

  • 检查代码中是否有硬编码的MongoDB端口
  • 排查是否存在其他配置文件(如application-dev.properties)或环境变量覆盖了spring.data.mongodb.port
  • 可直接在docker-compose.yml的web服务中添加环境变量强制指定端口:
    web:
      build: 
        context: .
        dockerfile: Dockerfile
      ports:
        - '5000:5000'
      depends_on:
        - mongodb
      environment:
        - SPRING_DATA_MONGODB_PORT=27017
    

2. 处理MongoDB启动就绪延迟

depends_on只保证容器启动顺序,不保证MongoDB服务完全就绪,可通过以下方式解决:

  • 在application.properties中添加连接超时与重试相关配置:
    spring.data.mongodb.connect-timeout=10000
    spring.data.mongodb.socket-timeout=10000
    spring.data.mongodb.max-wait-time=10000
    
  • 用healthcheck配合depends_on的健康检查条件(Docker Compose 3.8+支持):
    mongodb:
      image: mongo:latest
      ports:
        - 27017:27017
      healthcheck:
        test: ["CMD", "mongo", "--eval", "db.adminCommand('ping')"]
        interval: 5s
        timeout: 5s
        retries: 5
    web:
      build: 
        context: .
        dockerfile: Dockerfile
      ports:
        - '5000:5000'
      depends_on:
        mongodb:
          condition: service_healthy
    

3. 验证容器间网络连通性

如果以上方法无效,手动排查网络:

  • 进入web容器执行ping mongodb确认域名解析正常
  • 执行telnet mongodb 27017测试端口是否可达

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:46:15