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

无法从Python容器连接自定义构建的MongoDB Docker容器问题求助

MongoDB容器连接被拒绝问题解决方案

核心原因排查

你遇到的Connection refused错误由三个核心问题导致:自定义Mongo镜像启动参数错误、文件权限配置错误、动态生成的IP与实际Mongo容器IP不匹配。

具体修复步骤

  • 1. 修复启动脚本init_script.sh

默认mongod仅绑定127.0.0.1,外部容器无法访问,同时需要保证进程持续运行避免容器退出,修改脚本内容如下:

#!/bin/bash
service ssh restart
# 绑定所有网卡IP,指定数据存储目录,前台运行保证容器不退出
mongod --bind_ip 0.0.0.0 --dbpath /data/db
  • 2. 修复Dockerfile配置

    1. 你当前使用的Mongo源对应Ubuntu 20.04版本,将基础镜像从ubuntu:latest改为ubuntu:20.04避免版本不兼容导致Mongo安装失败
    2. 复制启动脚本后添加执行权限
    3. 修改数据目录权限,mongod默认使用mongodb用户运行,给root权限会导致启动无写入权限失败
      修改后的Dockerfile核心调整片段如下:
# 替换原来的FROM行
FROM ubuntu:20.04

# 复制完启动脚本后添加执行权限
COPY init_script.sh /home
RUN chmod +x /home/init_script.sh
RUN chown -R admin /home/admin/.ssh
RUN chmod 600 /home/admin/.ssh/authorized_keys

# 替换原来的chown行,将数据目录权限给mongodb用户
RUN chown -R mongodb:mongodb /data/db
  • 3. 修复IP匹配问题

报错日志中尝试连接的IP是172.17.0.4,但你的ip_file.json中写的是172.17.0.3,说明容器重启后IP发生了变更。建议不要使用动态生成的容器IP,改为创建Docker自定义网络,通过容器名访问Mongo,避免IP漂移问题。

验证排查方法

  1. 进入运行中的Mongo容器,执行ps aux | grep mongod确认进程是否正常运行
  2. 容器内执行mongosh --host 127.0.0.1:27017验证本地连接是否正常
  3. 业务容器内执行telnet <Mongo容器IP> 27017验证网络连通性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:36:02