【问题标题】:Want to connect mongodb docker service with my django application想将 mongodb docker 服务与我的 django 应用程序连接起来
【发布时间】:2018-12-28 06:49:59
【问题描述】:

我想创建两个docker服务一个是mongodb服务另一个是使用django构建的web服务。我需要需要连接到该 mongodb docker 服务的 web 服务(django 应用程序)。

但我不知道如何在我的 django 应用程序中连接 mongodb docker 服务,该应用程序也是在同一个 docker swarm 中运行的服务。`这是 我的 docker-compose.yml:

version: '3'

services:
  mongo:
    image: mongo:latest
    command: mongod --storageEngine wiredTiger
    ports:
      - "27017:27017"
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    links:
      - mongo
    depends_on:
      - mongo

我在 django 应用程序的 settings.py 中尝试使用 mongoengine,但失败了

MONGO_DATABASE_NAME = "reg_task21"
MONGO_HOST = "mongo"

mongoengine.connect(db=MONGO_DATABASE_NAME, host=MONGO_HOST,port=27017)

【问题讨论】:

  • 请格式化您的问题
  • 您的 docker compose 文件似乎是正确的。当你做 docker-compose up 时发生了什么?
  • 明三乐。是的,我猜。但我不确定如何与我的 django 应用程序和 mongodb docker 服务建立连接。我想使用那个 mongo 服务名称来连接数据库,但是我不确定确切的语法是什么
  • ` Minh Tri Le 在这里我添加了我的 django 应用程序的 settings.py 的一部分 """ reg_example 项目的 Django 设置。import os import mongoengine # Database # docs.djangoproject.com/en/2.1/ref/settings/#databases # DATABASES = { # 'default ': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # } # } MONGO_DATABASE_NAME = "reg_task2" MONGO_HOST = " mongo" mongoengine.connect(db=MONGO_DATABASE_NAME, host=MONGO_HOST, port=27017)

标签: django mongodb docker


【解决方案1】:

您应该在连接语句中添加usernamepassword

mongoengine.connect(db=MONGO_DATABASE_NAME, username='root', password='example', host=MONGO_HOST,port=27017)

【讨论】:

    猜你喜欢
    • 2020-01-07
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 2011-08-21
    • 1970-01-01
    • 2014-11-05
    相关资源
    最近更新 更多