docker 如何修复错误“错误:数据库未初始化,并且未指定超级用户密码,”

noj0wjuj  于 2023-08-03  发布在  Docker
关注(0)|答案(7)|浏览(154)

你好,我得到这个错误后,我运行docker-compose构建
但是我得到这个错误postgres_1|错误:数据库未初始化,且未指定超级用户密码。
下面是错误的快照!x1c 0d1x的数据
下面是我的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"

字符串

xytpbqjk

xytpbqjk1#

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

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

字符串
以上将解决错误。

eoigrqb6

eoigrqb62#

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

POSTGRES_PASSWORD此环境变量通常是使用PostgreSQL映像所必需的。此环境变量设置PostgreSQL的超级用户密码。默认超级用户由POSTGRES_USER环境变量定义。
POSTGRES_DB此可选环境变量可用于为镜像首次启动时创建的默认数据库定义不同的名称。如果未指定,则将使用POSTGRES_USER的值。

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

pkwftd7m

pkwftd7m3#

在交互模式中已经提到过;如何运行容器,如果找不到,请使用以下方法:
要允许所有连接而无需密码,请用途:

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

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

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

niwlg2el4#

总结一下docker官方网站上的命令:

docker run --name <YOUR_POSTGRES_DB> -e POSTGRES_PASSWORD=<YOUR_POSTGRES_PASSWORD> -d postgres

字符串

gijlo24d

gijlo24d5#

你可以对你的docker-compose.yml文件进行修改,比如:
db:image:postgres:13环境:- “POSTGRES_HOST_AUTH_METHOD=trust”

kulphzqa

kulphzqa6#

您可以使用下面的docker命令进行连接。
docker run -e POSTGRES_PASSWORD= <your_password>postgres:9.6.

zfciruhq

zfciruhq7#

yml语言是空间敏感的,所以

  • POSTGRES_DB=postgres与- POSTGRES_DB = postgres不同

相关问题