Docker compose: Error: role "hleb" does not exist

Docker compose: Error: role "hleb" does not exist

请您帮忙 docker 和 Postgres。

FROM node:16.13.1

WORKDIR /app

COPY package.json ./
COPY yarn.lock ./

RUN yarn install

COPY . .

COPY ./dist ./dist
CMD ["yarn", "start:dev"]

version: '3.0'

services:
  main:
    container_name: main
    build:
      context: .
    env_file:
      - .env
    volumes:
      - .:/app
      - /app/node_modules
    ports:
      - 4000:4000
      - 9229:9229
    command: yarn start:dev
    depends_on:
      - postgres
    restart: always

  postgres:
    container_name: postgres
    image: postgres:12
    env_file:
      - .env
    environment:
      PG_DATA: /var/lib/postgresql/data
      POSTGRES_HOST_AUTH_METHOD: 'trust'
    ports:
      - 5432:5432
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: always

volumes:
  pgdata:

DB_TYPE=postgres
DB_HOST=postgres
DB_PORT=5432
DB_USERNAME=hleb
DB_NAME=artwine
DB_PASSWORD=Mypassword

错误 [ExceptionHandler] 角色“hleb”不存在。

我尝试了针对现有问题的多种建议,但没有任何帮助。 我究竟做错了什么? 谢谢!

  • 不要使用 sudo - 除非你必须这样做。
  • 尽可能使用最新的 Postgres 版本。

Postgresql Docker Image 提供了一些环境变量,可帮助您启动数据库。

注意:

The PostgreSQL image uses several environment variables which are easy to miss. The only variable required is POSTGRES_PASSWORD, the rest are optional.

Warning: the Docker specific variables will only have an effect if you start the container with a data directory that is empty; any pre-existing database will be left untouched on container startup.

当你在docker-compose.yml文件中没有提供POSTGRES_USER环境变量时,它会默认为postgres.

您用于 Docker Compose 的 .env 文件不包含 docker 特定环境变量。

所以amending/extending它到:

POSTGRES_USER=hleb
POSTGRES_DB=artwine
POSTGRES_PASSWORD=Mypassword

应该可以解决问题。如果数据目录已经存在,您将必须 re-create 卷(删除它)才能使它工作。