【发布时间】:2017-05-09 04:41:49
【问题描述】:
我想在单独的 Docker 容器上运行一个带有 PostgreSQL 数据库和由 Django 提供支持的 REST API 的应用程序。到目前为止,API 一直在连接到 SQLite 数据库的 Docker 上运行,但是我现在遇到了麻烦,我想改为连接到 PostgreSQL 数据库。
Docker 的docker-compose.yml 文件:
version: '2'
services:
postgres:
image: postgres
api:
build: .
command: bash -c "python manage.py migrate && python manage.py runserver 0.0.0.0:1337"
volumes:
- .:/usr/src/app
ports:
- "1337:1337"
depends_on:
- postgres
Django 的settings.py(根据文档使用基本postgres 图像使用的默认设置):
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'wgomanager',
'USER': 'postgres',
'PASSWORD': 'mysecretpassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
当我使用docker-compose up 启动应用程序时,最终会抛出此错误:
api_1 | connection = Database.connect(**conn_params)
api_1 | File "/usr/local/lib/python3.6/site-packages/psycopg2/__init__.py", line 130, in connect
api_1 | conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
api_1 | django.db.utils.OperationalError: could not connect to server: Connection refused
api_1 | Is the server running on host "localhost" (::1) and accepting
api_1 | TCP/IP connections on port 5432?
api_1 | could not connect to server: Connection refused
api_1 | Is the server running on host "localhost" (127.0.0.1) and accepting
api_1 | TCP/IP connections on port 5432?
api_1 |
orchestrator_api_1 exited with code 1
我做错了什么?
【问题讨论】:
-
你的应用容器没有运行 postgres,所以它不应该引用本地主机。可能想看看docs.docker.com/compose/django/#create-a-django-project
标签: python django postgresql docker