Ruby on rails 从docker容器ruby on rails应用程序连接本地mongodb

Ruby on rails 从docker容器ruby on rails应用程序连接本地mongodb,ruby-on-rails,mongodb,docker,Ruby On Rails,Mongodb,Docker,我正在尝试从docker容器ruby on rails应用程序连接本地mongodb。 我在envFile文件中添加了变量env MONGODB_URI,值为: MONGODB_URI=mongodb://username:password@主机:27017/数据库 用于在容器中运行映像的命令: docker run-p80:80--env file~/envFile-v~/.ssh/filename:/tmp/filename--name=name-imagename 但它与mongodb没有

我正在尝试从docker容器ruby on rails应用程序连接本地mongodb。 我在envFile文件中添加了变量
env MONGODB_URI
,值为:

MONGODB_URI=mongodb://username:password@主机:27017/数据库

用于在容器中运行映像的命令:

docker run-p80:80--env file~/envFile-v~/.ssh/filename:/tmp/filename--name=name-imagename


但它与mongodb没有联系。我是docker的新手。

当您从容器内部指向您的
localhost
时,您将指向容器的
localhost
,而不是主机系统中的
localhost

解决问题的一种方法是使用
主机
网络,而不是默认的
网桥
:在
主机
网络中部署应用程序容器:

 docker run .. --net=host ..
另一种解决方法是使用
--addhost
选项

docker run .. --add-host="localhost:192.168.0.133" ...

在本例中,
192.168.0.133
是我的
en0
计算机的IP地址(请检查
ifconfig

这个解决方案适合我:添加了自签名ssl证书,配置了mongoid.yml,将所有信息放在uri中,在mongoid.yml中添加uri作为一个ENV var

你能从容器内部ping你的“主机”吗+你的“主机”不是本地主机?你能解释一下如何ping我的主机吗。是的,我的主人是本地人谢谢!我试过了,但没用。让我再给你解释一下我在做什么。我可能会做错什么我正在dockergnore文件中添加mongoid.yml•在env.config文件中添加env MONGODB_URI(在dockerFile中添加)•将env MONGODB_URI的值放在envFile中,其中主机名是mongoid.yml中的主机名•在0.0.0.0 IP地址中连接我的本地主机是否也必须配置和使用mongoid.yml?是否尝试了主机选项,是否尝试在容器内执行并ping MONGODB?如果这起作用,则是mongodb配置问题;如果不起作用,则是networkconfig问题