我已经为我的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而不是使用docker-compose.yml中的environment部分将env文件传递给docker,我也尝试过,但是没有用。
我正在寻找很长一段时间。谢谢!
好吧,过了一会儿,在帮助下,我发现了。我的系统上有一个本地的postgres。我猜,用户“ admin”已用于本地postgres。我删除了data / db文件夹并重命名了用户,然后它起作用了!然后,我再次删除了db文件夹,再次将用户重命名为“ admin”,但是停止了本地postgres,它也起作用了!
谢谢
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句