【发布时间】:2018-09-18 05:44:49
【问题描述】:
我已经为我的 Django 项目配置了 docker 和 postgres。
当我做python manage.py runserver 0:8000时,
它给了我这个错误:django.db.utils.OperationalError: FATAL: role "admin" does not exist
但是,我在以前的项目中使用了相同的配置,并且在这些项目中一切似乎都很好。
这是我的 docker-compose.yml 文件
version: '3'
services:
db:
image: postgres
environment:
- POSTGRES_DB=myproject
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=admin_pass
container_name: myproject_postgress
volumes:
- ./data/db:/var/lib/postgresql/data
myproject:
build: ./myproject
container_name: myproject
env_file:
- .env
command: "tail -f /dev/null"
volumes:
- ./myproject:/web
ports:
- "8000:8000"
depends_on:
- db
links:
- db:postgres
environment:
- DJANGO_SETTINGS_MODULE=myproject.settings.local
这是我的设置文件中的数据库部分:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'myproject',
'USER': 'admin',
'PASSWORD': 'admin_pass',
'HOST': 'postgres',
'PORT': '',
}
}
这些与 docker-compose.yml 中的相同
当我从命令行连接我的数据库时,我可以看到有用户 'admin'。 (当然是本地) 没有 docker,它不会给出任何错误。那么我对 docker 做错了什么?
PS: 在我以前的项目中,我使用 env_file 将 env 文件传递给 docker,而不是使用 docker-compose.yml 中的 environment 部分 我也尝试过,但没有奏效。
我找了很久。 谢谢!
【问题讨论】:
-
你迁移数据库了吗?
-
当我运行命令 python manage.py migrate 时,它会引发同样的错误。
标签: django postgresql docker docker-compose