加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 03:31:37 所属栏目:安全 来源:网络整理
导读:我使用docker-compose来连接django容器和postgres和mongo容器?我试图使用“docker-compose up”启动mongo和postgres容器(因为我需要链接两者),但仍然django应用程序不能连接到mongodb默认设置.我的django-compose.yml文件内容如下: db1: image: postgres d

我使用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")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读