我无法使用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 ="同样,它没有工作
另外,我删除了所有旧容器/卷。
有什么想法吗?
答案 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