【问题标题】:Connecting local mongodb from docker container ruby on rails application从 docker 容器 ruby​​ on rails 应用程序连接本地 mongodb
【发布时间】:2018-12-01 04:04:31
【问题描述】:

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

MONGODB_URI=mongodb://username:password@host:27017/database

我用来在容器中运行图像的命令:

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

但它没有与 mongodb 连接。我是 docker 的新手。

【问题讨论】:

  • 你能从容器内 ping 你的“主机”+你的“主机”不是本地主机吗?
  • 你能解释一下如何ping我的主机吗?是的,我的主机是 localhost

标签: ruby-on-rails mongodb docker


【解决方案1】:

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

解决您的问题的一种方法是使用host 网络而不是默认的bridge:在host 网络中部署您的应用容器:

 docker run .. --net=host ..

解决此问题的另一种方法是使用--add-host 选项。

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

在这种情况下,192.168.0.133 是我的计算机的en0 IP 地址(检查ifconfig)。

【讨论】:

  • 谢谢!我试过了,但没有帮助。让我再解释一下我在做什么。我可能做错了什么。 • 我在 dockerignore 文件中添加 mongoid.yml • 在 env.config 文件中添加 env MONGODB_URI(在 dockerFile 中添加) • 将 env MONGODB_URI 的值放在 envFile 中,其中主机名是来自 mongoid.yml 的主机名 • 将我的 localhost 连接到0.0.0.0 IP地址 我也必须配置和使用mongoid.yml吗?
  • 您是否尝试了主机选项,您是否尝试在您的容器内执行并 ping 您的 mongodb?如果可行,则为 mongodb 配置问题,如果不可行,则为 networkconfig 问题
【解决方案2】:

此解决方案适用于我:添加自签名 ssl 证书,配置 mongoid.yml,将所有信息放入 uri,将 mongoid.yml 中的 uri 添加为 ENV var

【讨论】:

    猜你喜欢
    • 2017-10-03
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 2023-02-11
    • 2019-05-24
    • 2014-02-12
    • 1970-01-01
    相关资源
    最近更新 更多