运行 postgres docker 镜像时出现“致命:角色“postgres”不存在”

问题描述 投票:0回答:1

我正在开发一个使用 postgres 数据库的应用程序。我使用

docker-compose
在容器中运行所有内容。

我的撰写文件如下所示:

version: '3.8'

services:
  backend:
    ... # Backend stuff, runs fine
    depends_on:
      - db
  frontend:
    ... #Frontend stuff, runs fine
  db:
    image: postgres
    volumes:
      - ./db/data:/var/lib/postgressql/data
    ports:
      - 5432:5432
    environment:
      - POSTGRES_PASSWORD=*********** #This is a proper password
    healthcheck:
      test: ["CMD","pg_isready", "-d", "postgres", "-h", "localhost", "-p 5432", "-U postgres"]
      interval: 10s
      timeout: 30s
      retries: 5
      start_period: 30s

一切正常并运行良好,但是,我的数据库容器不断打印出此错误消息:

FATAL:  role " postgres" does not exist

我没有指定任何用户,因此根据我的理解,在构建映像时应该创建默认角色“postgres”。

我也看到很多人在他们的系统上运行其他 postgres 数据库时遇到这个问题,但对我来说情况并非如此。

PS.

我的后端是使用 FastAPI 和 SQLAlchemy 以及 psycopg 用 python 编写的。 它使用 URL

'postgresql+psycopg://postgres:DBPASSWORD@db:5432'

连接到数据库
postgresql docker docker-compose
1个回答
0
投票
  • 确保首先设置变量,以便可以连接到该实例。
  • 使用命名卷
    db-data
    而不是替代方案
    bind mount
    。如果您仍然喜欢
    bind mount
    ,请将拼写错误
    postgressql
    修正为
    postgresql
  • Docker 网络可能无法将
    localhost
    解析为正确的容器 IP。对于这种情况,请删除
    localhost
    并添加
    db
    。通过此更改,
    -h db
    告诉 PostgreSQL 连接到您的撰写文件中定义的名为
    db
    的服务。
version: '3.8'

services:
  backend:
    ... # Backend stuff, runs fine
    depends_on:
      - db
  frontend:
    ... #Frontend stuff, runs fine
  db:
    image: postgres
    volumes:
      # - ./db/data:/var/lib/postgresql/data
      - db-data:/var/lib/postgresql/data
    ports:
      - 5432:5432
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=*********** #This is a proper password
      - POSTGRES_DB=postgres
    healthcheck:
      test: 
        [
          "CMD",
          "pg_isready",
          "-d",
          "postgres",
          "-h",
          # "localhost",
          "db",
          "-p 5432",
          "-U postgres",
        ]
      interval: 10s
      timeout: 30s
      retries: 5
      start_period: 30s
volumes:
  db-data:
© www.soinside.com 2019 - 2024. All rights reserved.