我使用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失败.这是另一个问题,我仍然需要得到根.
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")