MongoDB & Docker:从 Docker 化 Mongo 客户端到外部服务器的连接被拒绝
MongoDB & Docker: connections from Dockerized Mongo client to external server refused
我在服务器 A 上有一个 mongod 实例 运行。服务器 B 为我们的 Web 应用程序(apache、django、mongo引擎)。服务器 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
这就是我使用 mongo引擎进行连接的方式:
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
。
我错过了什么?
事实证明它与 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 which was helpful and the pymongo blog post,它最终为我提供了修复。
我在服务器 A 上有一个 mongod 实例 运行。服务器 B 为我们的 Web 应用程序(apache、django、mongo引擎)。服务器 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
这就是我使用 mongo引擎进行连接的方式:
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
。
我错过了什么?
事实证明它与 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 which was helpful and the pymongo blog post,它最终为我提供了修复。