我在服务器A上运行了一个mongod实例。服务器B有一个Dockerized容器用于我们的web应用程序(apache,django,mongoengine)。服务器B的mongo客户端需要连接到A的mongod实例。我可以通过shell和pymongo连接而没有从B到A的麻烦但我的Dockerized django应用程序的连接被拒绝。
ConnectionError: Cannot connect to database test :
[Wed Mar 11 17:30:49.452307 2015] [:error] [pid 13:tid 140069001664256] [client <client ip>] [Errno 111] Connection refused
这就是我使用mongoengine连接的方式:
register_connection(alias="test", name="test", host="mongodb://user:pwd@<server ip>:27017/test?ssl=true")
connect(db="test", alias="test")
运行Docker容器
docker run -d -p 443:443 -p 27017:27017 me/webapp
我还根据docs将ip_forward
设置为1
。
我错过了什么?
答案 0 :(得分:0)
事实证明它与Docker或mongoengine(直接)无关。 Pymongo 2.7.2不支持SCRAM-SHA-1认证。解决方案是安装2.8候选版本。
pip install git+git://github.com/mongodb/mongo-python-driver.git@2.8rc0
查看有用的Jira ticket和最终为我提供修复的pymongo blog post。