anu*_*rag 11 django mongodb docker
我使用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
Run Code Online (Sandbox Code Playgroud)
它使用默认设置与postgres连接.我也可以在本地telnet到mongodb端口.仍然,我在启动Web容器时遇到此错误:
在get_connection web_1中输入文件"/usr/local/lib/python2.7/site-packages/mongoengine/connection.py",第124行.引发ConnectionError("无法连接到数据库%s:\n%s"%(别名,e))web_1 | mongoengine.connection.ConnectionError:无法连接到数据库默认值:web_1 | [Errno 111]连接被拒绝
PS:我已成功在我的localhost上启动了一个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)
Run Code Online (Sandbox Code Playgroud)
DB2
作为您服务的名称27017
作为暴露服务的端口. UPDATE
现在,使用与其别名类似的主机名,其他服务可以访问docker-compose容器.链接文档:
链接服务的容器可以在与别名相同的主机名上访问,如果未指定别名,则可以访问服务名称.
这样你可以像这样连接到MongoDB:
import mongoengine
mongoengine.connect(host="db2")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6792 次 |
最近记录: |