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



我无法使用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

最新更新