Django “用户”的密码不匹配;博士后;从本地计算机删除postgresql后
我在3个分开的docker容器中运行一个应用程序。一个用于postgresql,另一个用于Django,第三个用于nginx。在我的Django “用户”的密码不匹配;博士后;从本地计算机删除postgresql后,django,postgresql,docker,Django,Postgresql,Docker,我在3个分开的docker容器中运行一个应用程序。一个用于postgresql,另一个用于Django,第三个用于nginx。在我的settings.py中,我从.env文件中检索数据库设置的数据,如下所示: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': os.environ.get('DB_NAME'), 'USER': os.e
settings.py
中,我从.env
文件中检索数据库设置的数据,如下所示:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.environ.get('DB_NAME'),
'USER': os.environ.get('POSTGRES_USER'),
'PASSWORD': os.environ.get('POSTGRES_PASSWORD'),
'HOST': os.environ.get('DB_HOST'),
'PORT': os.environ.get('DB_PORT'),
}
}
我使用sqlite
进行开发,但使用postgresql构建docker映像,它工作得非常好。然后出于测试目的,我使用完全相同的设置将postgresql连接到django作为开发数据库。但在我返回sqlite并使用此db设置构建另一个映像之后,它实际上开始返回密码错误
db_1 | Connection matched pg_hba.conf line 99: "host all all all md5"
db_1 | 2020-09-20 16:39:02.730 UTC [36] FATAL: password authentication failed for user "postgres"
db_1 | 2020-09-20 16:39:02.730 UTC [36] DETAIL: Password does not match for user "postgres".
我的docker撰写文件:
version: '3.8'
volumes:
postgres_data:
static:
media:
services:
db:
image: postgres:latest
volumes:
- postgres_data:/var/lib/postgresql/data/
env_file:
- ./.env
web:
image: ashowlsky/foodgram:v3.8
restart: always
command: gunicorn foodgram.wsgi:application --bind 0.0.0.0:8000
volumes:
- ./static:/code/static/
- ./media:/code/media/
ports:
- "8000:8000"
depends_on:
- db
env_file:
- ./.env
nginx:
image: nginx:1.19.2
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./static:/code/static/
- ./media:/code/media/
depends_on:
- web
原因可能是什么?以及
/.env
的内容是什么?最可能的原因是您删除了Postgres群集,然后构建了一个新群集,并且没有添加回密码。仅供参考,要从Postgres群集保存全局数据,请使用pg_dumpall-g
。这将保存角色
信息,包括密码。