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

Docker Compose部署下Python容器尝试通过localhost连接Mongo容器问题

问题根因及修复方案

1. 首要问题:Mongo服务启动配置错误

你的mongo_service中错误配置了command: mongo:

  • 官方mongo镜像默认启动命令是mongod,即Mongo数据库服务端,会监听27017端口提供服务
  • 你覆盖为mongo后,容器启动时会运行Mongo客户端程序,默认尝试连接本地127.0.0.1的服务端,容器内根本没有运行服务端进程,所以mongo_service容器本身启动就会失败,根本没有可用的Mongo服务
    修复方式:直接删除mongo_service下的command: mongo配置行即可

2. 网络配置错误

你在compose末尾声明了外部网络db_net,但所有服务都没有指定加入该网络:

  • 如果没有使用外部网络的特殊需求,直接删除compose末尾的networks配置块即可,Docker Compose默认会为当前项目创建专属网络,服务之间可以直接用服务名互通
  • 如果确实需要使用已有的外部db_net网络,需要在每个服务的配置块下添加如下配置:
networks:
  - db_net

3. 额外排查点

  • 检查你的Python项目中是否有环境变量、全局配置文件指定了Mongo连接地址为127.0.0.1,这类配置的优先级通常高于代码中直接写的MongoClient参数
  • depends_on仅控制容器启动顺序,不会等待Mongo服务完全就绪再启动API服务,建议给mongo_service添加健康检查,确保Mongo启动完成后再启动API:
# 添加到mongo_service配置块下
healthcheck:
  test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet
  interval: 5s
  timeout: 5s
  retries: 5

同时修改cinemas_api的depends_on配置:

depends_on:
  mongo_service:
    condition: service_healthy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:06:08