首页 > 解决方案 > 密码验证失败 + Docker + Django

问题描述

我不是第一次使用 Docker,但显然我的设置有问题,我无法弄清楚。

这是我的 docker-compose.yml

version: "3.1"
services:
   db:
     image: postgres:9.6.9-alpine
     environment:
         POSTGRES_USER: rentalapp
         POSTGRES_PASSWORD: rentalapp
         POSTGRES_DB: rentalapp
     ports:
        - "5432:5432"
     volumes:
        - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

这是我的 local.py

DATABASES = {
    "default": {
       "ENGINE": "django.db.backends.postgresql",
       "USER": "rentalapp",
       "PASSWORD": "rentalapp",
       "PORT": 5432,
       "NAME": "rentalapp",
       "HOST": "localhost",
       "ATOMIC_REQUESTS": True,
 }
}

追溯:

django.db.utils.OperationalError: FATAL:  password authentication failed for user "rentalapp"

标签: pythondjangodocker

解决方案


我对这个错误的猜测是它与卷(绑定安装目录)有关。

这可能是因为卷(或绑定挂载目录)在您第一次启动后已经初始化。postgres 用户和数据库创建仅在第一次启动时发生(即,/var/lib/postgresql/data 不得已包含数据库文件)。尝试运行:

docker-compose rm -fv postgres删除任何容器或卷(特别是)。

docker-compose up -d启动你的容器。


推荐阅读