Using Docker: sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL: password authentication failed for user "username"

Using Docker: sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL: password authentication failed for user "username"

错误:

sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL:  password authentication failed for user "username"

您好,我正在尝试使用 Docker 在本地 运行 一个程序,但在标题中出现错误,即使它之前可以正常工作。

我已经尝试重新安装 Docker、re-cloning 存储库、重新安装 PostgresSQL(问题是在我第一次安装时出现的)。通过阅读类似的问题,我确保密码匹配。 Docker Postgres 数据库的密码是 'password',我已经尝试更改它,但仍然没有用。

我正在使用 'docker-compose up -d' 然后 运行ning 测试,但我在标题中得到了错误。我试过 运行ning 'docker-compose down' 然后重做,但我仍然得到错误。

.env 文件:

FLASK_ENV=development
REDIS_URL=redis://localhost:6379
DATABASE_URL=postgresql+psycopg2://username:password@localhost:5432/programname
PROGRAM_API_APP_NAME=test-prod.compute.random.com

docker-compose.yml:

version: '3'

services:
  postgresql:
    image: postgres:10-alpine
    environment:
      - POSTGRES_DB=programname
      - POSTGRES_PASSWORD=password
      - POSTGRES_USER=username
    ports:
      - "5432"
  redis:
    image: redis:5.0.3
    ports:
      - "6379:6379"

(我没有 5432:5432 的端口,因为它不能用,我找到了删除第二个 5432 的答案。)

老大帮我解决了这个问题。显然,当我安装 Postgres 时,它创建了一个 postgres 用户,该用户有一个正在使用端口 5432 的进程,即使我们杀死它,它也会自动重新启动。为了解决这个具体问题,我们将 docker-compose 文件更改为在本地使用端口 5433,在容器中使用 5432。仍然需要找出如何摆脱 postgres 用户。