码头工作人员与mongodb一起运行django

前端之家收集整理的这篇文章主要介绍了码头工作人员与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.我也可以telnet到本地的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)

>在Docker-compose.yml中使用DB2作为您的服务的名称
> 27017是公开服务的端口.
> More about docker-compose environment variables
>我把它放在我的设置文件中.但是,根据您的项目架构,您可以自由地将其放在任何适合您的位置

UPDATE

现在,其他服务使用类似于其别名的主机名,可以使用docker-comp容器. 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")

猜你在找的Docker相关文章