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

时间:2017-08-26 03:14:47

标签: postgresql docker yaml docker-compose

我无法使用Docker-compose为Postgres设置密码。 Postgres正在加载没有密码和默认用户名" postgres",似乎应用了下面的环境变量。下面是我的docker-compose.yml文件的db服务:(版本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"

注意我尝试使用" -POSTGRES_USER ="同样,它没有工作

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

有什么想法吗?

4 个答案:

答案 0 :(得分: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"

虽然很晚了,但我希望这能帮助那些寻求类似解决方案的人。

答案 1 :(得分:1)

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

$ 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=# 

答案 2 :(得分:1)

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

有关更多信息,请查看documentation

答案 3 :(得分:1)

启动 postgres 实例:-

<块引用>

docker run --name postgres-0 -e POSTGRES_PASSWORD=mypassword -p 5433:5433 -d postgres

现在我们可以通过这个命令检查docker所有正在运行的容器:-

<块引用>

docker ps