【发布时间】: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)