如何解决错误“错误:数据库尚未初始化,并且未指定超级用户密码。”

时间:2020-02-26 19:12:16

标签: postgresql docker docker-compose

您好,我在运行docker-compose build后收到此错误

但是我得到这个错误 postgres_1 |错误:数据库尚未初始化,并且未指定超级用户密码。

这里是错误的快照! enter image description here

下面是我的docker-compose.yml文件

版本:“ 3.6”

Server.js文件

services: 
  smart-brain-api:
    container_name: backend
    build: ./
    command: npm start
    working_dir: /usr/src/smart-brain-api
    ports:
      - "3000:3000"
    volumes:
      - ./:/usr/src/smart-brain-api
 
  #PostGres Database
 
  postgres:
    image: postgres
    ports:
      - "5432:5432"

4 个答案:

答案 0 :(得分:25)

可以通过对POSTGRES_HOST_AUTH_METHOD进行以下更改来使用docker-compose.yml环境属性。

db:
    image: postgres:9.6-alpine
    environment:
      POSTGRES_DB: "db"
      POSTGRES_HOST_AUTH_METHOD: "trust"

以上内容将解决错误。

答案 1 :(得分:17)

为避免这种情况,您可以在docker-compose文件中为postgres容器指定以下环境变量。

POSTGRES_PASSWORD 使用PostgreSQL映像通常需要此环境变量。此环境变量设置PostgreSQL的超级用户密码。默认的超级用户由POSTGRES_USER环境变量定义。

POSTGRES_DB 此可选环境变量可用于为首次启动映像时创建的默认数据库定义其他名称。如果未指定,则将使用POSTGRES_USER的值。

有关环境变量的更多信息,请检查: https://hub.docker.com/_/postgres

答案 2 :(得分:1)

您可以像示例中那样更改 docker-compose.yml 文件:

数据库: 图片:postgres:13 环境: - "POSTGRES_HOST_AUTH_METHOD=trust"

答案 3 :(得分:0)

在交互模式中已经提到过;如何运行容器,如果找不到,请使用以下命令:

要允许所有不使用密码的连接,请使用

  • docker run -e POSTGRES_HOST_AUTH_METHOD =信任postgres:9.6(使用您需要的标记)。

要为超级用户指定postgres密码,请使用:

  • docker run -e POSTGRES_PASSWORD = <您的密码> postgres:9.6(使用您需要的标签)。