无法使用docker-compose为Postgres设置密码

Iss*_*sam 5 postgresql yaml docker docker-compose

我无法使用Docker-compose设置Postgres的密码。Postgres正在加载而没有密码,并且使用默认用户名“ postgres”,似乎未应用以下环境变量。以下是我的docker-compose.yml文件的数据库服务:(版本3)

db:
  image: postgres
  container_name: postgres
  environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: db
  restart: unless-stopped
  volumes:
    - ./postgres-data:/var/lib/postgresql/data
  ports:
    - "5432:5432"
Run Code Online (Sandbox Code Playgroud)

请注意,我也尝试使用了“ -POSTGRES_USER =”,但没有用

另外,我删除了所有旧的容器/卷。

任何的想法?

ilm*_*cio 9

问题应该出在附加的卷上。当您的容器启动时,它会添加您提供给他的凭据,但随后会附加卷,这将导致此信息被重写。

有关更多信息,查看 https://github.com/docker-library/postgres/issues/203#issuecomment-255200501


sxd*_*thx 5

主要原因是在环境部分使用“:”而不是“=”。理想情况下,它应该如下所示:

db:
  image: postgres
  container_name: postgres
  environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD= pass
      - POSTGRES_DB= db
  restart: unless-stopped
  volumes:
    - ./postgres-data:/var/lib/postgresql/data
  ports:
    - "5432:5432"
Run Code Online (Sandbox Code Playgroud)

虽然很晚,但我希望这有助于寻找类似解决方案的人。


lar*_*sks 4

你的配置对我来说效果很好。我怀疑您没有使用完整的正确凭据集,其中包括用户名、密码和数据库名称。如果我采用您的示例并在不进行修改的情况下运行它,我可以使用用户名和密码docker-compose.yaml连接到数据库,db如下所示:userpass

$ psql -h localhost -U user db
Password for user user: 
psql (9.5.7, server 9.6.1)
WARNING: psql major version 9.5, server major version 9.6.
         Some psql features might not work.
Type "help" for help.

db=# 
Run Code Online (Sandbox Code Playgroud)