django - docker-compose 用 mongodb 运行 django

我在使用 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)
  • DB2docker-compose.yml
  • 中的服务名称
  • 27017 是暴露服务的端口。
  • More about docker-compose environment variables
  • 我会把它放在我的设置文件中。但您可以根据您的项目架构随意将其放在您认为合适的任何位置

更新

现在,其他服务可以使用与其别名相似的主机名访问 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 吗?

mongodb - 与 nosql 的多对多关系(mongodb 和 mongoose)

python - 如何将数据读入 TensorFlow?

mongodb - mongo 聚合结果超出最大文档大小

java - 如何在 Spring Data MongoDB 存储库中查询日期?