Docker Compose中应用连接MongoDB被拒绝问题排查求助
MongoDB连接拒绝问题排查
问题描述
在docker-compose.yml中配置了mongodb与infrastructure服务,运行docker-compose时,infrastructure应用抛出连接localhost:27017被拒绝的错误,但并未在应用中主动尝试连接mongodb,询问是否遗漏了配置。
配置详情
version: '3.7' networks: app-tier: driver: bridge mongodb: image: 'bitnami/mongodb:latest' container_name: "mongodb" environment: MONGODB_INITIAL_PRIMARY_HOST: mongodb MONGODB_ADVERTISED_HOSTNAME: mongodb MONGODB_REPLICA_SET_MODE: primary MONGODB_INITDB_DATABASE: testdb MONGODB_REPLICA_SET_NAME: rs0 ALLOW_EMPTY_PASSWORD: 'yes' ports: - "27017:27017" volumes: - ./scripts/mongorestore.sh:/docker-entrypoint-initdb.d/mongorestore.sh - ./data/mongodb:/data/mongodb networks: - app-tier infrastructure: build: context: . dockerfile: Dockerfile target: base container_name: infra environment: - SPRING_PROFILES_ACTIVE=dev - KAFKA_BROKERS=kafka:9092 - REDIS_ENDPOINT=redis - APP_NAME=infrastructure volumes: - ~/.m2:/root/.m2 depends_on: - "kafka" - "redis" - "mongodb" networks: - app-tier
错误信息
error connecting to host: could not connect to server: server selection error: server selection timeout, current topology: { Type: Single, Servers: [{ Addr: localhost:27017, Type: Unknown, Last error: connection() error occured during connection handshake: dial tcp 127.0.0.1:27017: connect: connection refused }, ] }
排查与解决
核心原因
报错明确显示应用在尝试连接localhost:27017,即便你没主动写连接代码,大概率是以下场景导致:
- Spring框架自动触发连接
从环境变量SPRING_PROFILES_ACTIVE能看出这是Spring应用,如果项目中引入了spring-boot-starter-data-mongodb或相关MongoDB依赖,Spring会默认尝试连接localhost:27017,哪怕你没显式配置连接参数。 - 第三方依赖/初始化脚本暗中发起连接
检查应用的启动逻辑、初始化脚本,或是监控、日志类第三方组件,是否默认配置了MongoDB连接。 - Docker网络认知误区
Docker容器内的localhost指向容器自身,而非宿主机或MongoDB容器。即便需要连接MongoDB,也应该用服务名mongodb作为地址,而非localhost。
解决方案
若确实不需要MongoDB连接:
- 移除
infrastructure服务depends_on中的mongodb,避免不必要的依赖等待。 - 检查项目依赖,移除
spring-boot-starter-data-mongodb等MongoDB相关依赖。
- 移除
若需要MongoDB连接:
在infrastructure的环境变量中添加MongoDB连接配置,替换默认的localhost地址:infrastructure: # 其他配置... environment: # 已有变量... - SPRING_DATA_MONGODB_URI=mongodb://mongodb:27017/testdb?replicaSet=rs0
内容的提问来源于stack exchange,提问作者ppb
相关产品推荐
相关产品推荐

