org.postgresql.util.PSQLException:致命:角色“amigoscode”不存在

Ank*_*wal 5 postgresql docker spring-boot docker-compose

我是 SpringBoot 的新手。我正在尝试创建一个使用 docker 运行的 Spring Boot 应用程序。当我运行这个应用程序时,出现以下错误

org.postgresql.util.PSQLException: FATAL: role "amigoscode" does not exist
Run Code Online (Sandbox Code Playgroud)

我没有任何提示,因为我无法追踪这个错误。角色“amigoscode”已存在。我附在 application.yml 和 docker-compose.yml 下面

应用程序.yml

server:
  port: 8080

spring:
  application:
    name: customer
  datasource:
    password: password
    url: jdbc:postgresql://localhost:5432/customer
    username: amigoscode
  jpa:
    hibernate:
      ddl-auto: create-drop
    properties:
      hibernate:
        dialect: org.hibernate.dialect.PostgreSQLDialect
        format_sql: 'true'
    show-sql: 'true'
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

services:
  postgres:
    container_name: postgres
    image: postgres
    environment:
      POSTGRES_USER: amigoscode
      POSTGRES_PASSWORD: password
      PGDATA: /data/postgres
    volumes:
      - postgres:/data/postgres
    ports:
      - "5432:5432"
    networks:
      - postgres
    restart: unless-stopped

  pgadmin:
    container_name: pgadmin
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org}
      PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
      PGADMIN_CONFIG_SERVER_MODE: 'False'
    volumes:
      - pgadmin:/var/lib/pgadmin
    ports:
      - "5050:80"
    networks:
      - postgres
    restart: unless-stopped

networks:
  postgres:
    driver: bridge

volumes:
  postgres:
  pgadmin:
Run Code Online (Sandbox Code Playgroud)

你能指导我吗,我在这里可能做错了什么?我在这里提到了其他类似的问题,但没有一个解决我的问题。谢谢。

小智 0

当您运行 Postgres 容器并POSTGRES_USER作为环境变量传递时,将运行初始化脚本来创建用户。但是,如果文件夹(postgres 卷)已包含较早运行的数据,则将跳过初始化并且不会创建用户。尝试使用新卷并在 postgres 容器启动时检查日志。