我正在为mac 1.12.0运行docker并尝试连接到我的mac上运行的mongo副本集。我在ruby中使用mongo gem进行连接,并在执行--net="host"
时提到了docker run
选项。我收到这样的错误:
Mongo :: ConnectionFailure:无法使用种子连接到副本集 127.0.0.1:27017,127.0.0.1:27018 /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/connection/pool_manager.rb:272:in
get_valid_seed_node' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/connection/pool_manager.rb:178:in
connect_to_members' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/connection/pool_manager.rb:70:inblock in connect' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/connection/pool_manager.rb:65:in
同步' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/connection/pool_manager.rb:65:inconnect' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_replica_set_client.rb:210:in
阻止连接' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_replica_set_client.rb:199:insynchronize' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_replica_set_client.rb:199:in
连接' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_client.rb:656:insetup' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_replica_set_client.rb:524:in
设定' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_replica_set_client.rb:176:ininitialize
我以守护进程模式运行容器并尝试ping我的主机ip并且成功了。从技术上讲它应该有效,但它不是。还有其他人遇到过类似情况吗?
答案 0 :(得分:1)
根据您获取应用程序的错误,尝试在本地连接MongoDB(127.0.0.1
),这意味着在docker容器中。获取mac主机的IP地址(运行MongoDB的位置)并在应用程序配置中设置它。
考虑在docker compose
的帮助下,在另一个docker容器中运行MongoDB。
答案 1 :(得分:0)
使用此方法,而不是使用macs host-ip(不可移植(不同的开发人员,不同的网络,如office / home)),使用此方法:https://gist.github.com/EugenMayer/3019516e5a3b3a01b6eac88190327e7c
所以你在你的mac上为你的loopback设备创建了一个alias-ip。然后,不要连接到容器中的127.0.0.1,而是使用10.254.254.254。
一个非常类似的问题,在这里更简单的回答https://stackoverflow.com/a/38985163/3625317