我在使用 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 连接。我也可以在本地 telnet 到 mongodb 端口。尽管如此,我还是在启动 Web 容器时遇到此错误:
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.yml 中的服务名称 27017
是暴露服务的端口。 更新
现在,其他服务可以使用与其别名相似的主机名访问 docker-compose 容器。 link documentation:
这样你就可以像这样连接到 MongoDB:
import mongoengine
mongoengine.connect(host="db2")
关于django - docker-compose 使用 mongodb 运行 django,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28854468/