【发布时间】:2017-05-25 04:58:24
【问题描述】:
我目前有一个使用 docker-compose 构建的系统,它创建了一个 Django 应用程序。
到目前为止,我在测试版本中使用了容器内的数据库 (postgresql)。现在我已将数据库从这个容器更改为 AWS 中的 RDS 实例。
使用 Pg_dump 我在 RDS 中重新创建了数据库并更改了 settings.py,一切正常。我已经从我的 webapp 内的数据库中访问了数据,没有任何问题。
一切都很好,直到我不得不进行迁移。如果没有数据库容器,Django 容器会给我这个消息:
django.db.utils.OperationalError:无法翻译主机名“db” 收件人:姓名或服务未知
更改前我的 Docker-compose.yml 文件:
version: '2'
services:
db:
image: postgres:9.5
restart: always
environment:
POSTGRES_USER: testing
POSTGRES_PASSWORD: tests
POSTGRES_DB: test
volumes:
- /dbdata:/var/lib/postgresql/data
django:
build: ./django
command: gunicorn contactto.wsgi:application -b 0.0.0.0:8000
restart: always
volumes:
- ./django:/usr/src/app
- ./django/static:/usr/src/app/contactto/static
ports:
- "8000:8000"
depends_on:
- db
更改后的现在:
version: '2'
services:
django:
build: ./django
command: gunicorn contactto.wsgi:application -b 0.0.0.0:8000
restart: always
volumes:
- ./django:/usr/src/app
- ./django/static:/usr/src/app/contactto/static
ports:
- "8000:8000"
还有来自 settings.py 的数据库。 之前:
DATABASES = {
'default': {
'ENGINE': 'tenant_schemas.postgresql_backend',
'NAME': 'testing',
'USER': 'test',
'PASSWORD': 'test',
'HOST': 'db',
'PORT': '5432',
}
}
之后:
DATABASES = {
'default': {
'ENGINE': 'tenant_schemas.postgresql_backend',
'NAME': 'testing',
'USER': 'test',
'PASSWORD': 'test',
'HOST': 'xxx.rds.amazonaws.com',
'PORT': '5432',
}
}
奇怪的是,我可以在我的应用程序中使用 aws 数据库...我可以创建用户并在数据库中执行操作,并且更改会出现。现在在 CLI 中,我什至无法在没有消息的情况下使用 manage.py shell。
我完全迷路了。
【问题讨论】:
标签: django postgresql amazon-web-services docker-compose