我在使用 docker-compose 将 django 容器与 postgres 和 mongo 容器链接时遇到问题?我正在尝试使用“docker-compose up”来启动 mongo 和 postgres 容器(因为我需要链接两者)但 django 应用程序仍然无法在默认设置下连接到 mongodb。我的 django-compose.yml 文件内容复制如下:
db1:
image: postgres
db2:
image: mongo
ports:
- "27017:27017"
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db1
- db2
它确实使用默认设置与 postgres 连接。我也可以在本地远程登录到 mongodb 端口。不过,我在启动 Web 容器时收到此错误:
File "/usr/local/lib/python2.7/site-packages/mongoengine/connection.py", line 124, in get_connection web_1 | raise ConnectionError("Cannot connect to database %s :\n%s" % (alias, e)) web_1 | mongoengine.connection.ConnectionError: Cannot connect to database default : web_1 | [Errno 111] Connection refused
PS:我已经在我的本地主机上成功启动了一个 django-postgres 连接的应用程序,但它无法连接到 AWS 实例上的 db。这是我仍然需要解决的另一个问题。
最佳答案
我遇到了类似的问题,但使用了另一个服务(不是 MongoDB)。我不确定我做错了什么,但这就是我可以解决的方法:
import os
import mongoengine
MONGODB_HOST = os.environ.get('DB2_PORT_27017_TCP_ADDR', '127.0.0.1')
mongoengine.connect(host=MONGODB_HOST)
DB2
是 docker-compose.yml27017
是暴露服务的端口。 更新
现在,其他服务可以使用与其别名相似的主机名访问 docker-compose 容器。 link documentation :
Containers for the linked service will be reachable at a hostname identical to the alias, or the service name if no alias was specified.
这样你就可以像这样连接到 MongoDB:
import mongoengine
mongoengine.connect(host="db2")
https://stackoverflow.com/questions/28854468/
相关文章:
mongodb - 在 mongo 聚合中选择 * group by
mongodb - 文档数据库是否适合存储大量股票报价数据?
javascript - node.js mongodb - collection.find().t
javascript - Mongodb v4.0 事务,MongoError : Transact
mongodb - 使用 ReadPreference=NEAREST 的 Mongos 路由
mongodb - 可以在不存在的集合上调用 ensureIndex 吗?