Docker环境下Ruby脚本容器与MongoDB容器连接失败求助
问题原因
每个Docker容器拥有独立的网络命名空间,你的Ruby脚本容器中127.0.0.1指向的是脚本容器自身,而非MongoDB容器,因此会出现连接被拒绝的错误。
解决方案
1. 创建Docker自定义网络
自定义网络是Docker官方推荐的容器互联方式,支持容器间通过名称/别名解析:
docker network create mongo-ruby-net
2. 启动MongoDB容器并加入该网络
启动时指定网络和容器名称(后续脚本将通过这个名称连接):
docker run -d --name mongo-container --network mongo-ruby-net mongo
3. 修改Ruby脚本的数据库连接地址
将连接代码中的127.0.0.1替换为MongoDB容器的名称mongo-container:
Mongo::Client.new(['mongo-container:27017'])
4. 重新构建Ruby脚本镜像(若脚本有修改)
docker build -t my_ruby_script .
5. 启动Ruby脚本容器并加入同一网络
docker run --network mongo-ruby-net my_ruby_script
额外检查项
- 确保MongoDB容器正常运行:执行
docker ps查看mongo-container的状态为Up - 可通过
docker logs mongo-container查看MongoDB启动日志,确认服务已就绪
内容的提问来源于stack exchange,提问作者JACKoJONS
相关产品推荐
相关产品推荐

