我已经为我的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方面做错了什么呢?
备注: 在我的之前的项目中,我使用env_file而不是在docker-compose.yml的environment部分传递env文件。 我也尝试过这种方法,但它没有起作用。
我已经寻找很长时间了。 谢谢!