我无法使用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"
注意我也尝试使用"-POSTGRES_USER=",它不起作用
另外,我删除了所有旧容器/卷。
知道吗?
问题应该出在连接的卷上。当您的容器启动时,它将添加您提供给他的凭据,但随后将附加卷,这将导致此信息被重写。
有关更多信息,请查看 https://github.com/docker-library/postgres/issues/203#issuecomment-255200501。
主要原因是在环境部分使用":"而不是"="。 理想情况下,它应该看起来像这样:
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"
您的配置对我来说很好用。 我怀疑您没有使用完整的正确凭据集,其中包括用户名、密码和数据库名称。 如果我docker-compose.yaml
您的示例并在不加修改的情况下运行它,我可以使用用户名user
和密码pass
连接到数据库db
:
$ 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=#
只需运行
docker compose down -v
然后执行
docker compose up
*警告 - 第一个命令将擦除您的卷
有同样的问题。 2周解决不了。 阅读几乎所有与之相关的内容。
在本地机器上完成所有与PosgreSQL服务器相关的进程后,一切都很顺利。
Start postgres instance:-
docker run --name postgres-0 -e POSTGRES_PASSWORD=mypassword -p 5433:5433 -d postgres
现在我们可以通过以下命令检查 docker 所有正在运行的容器:-
码头工人PS