我在虚拟机内部的docker容器中运行web app和postgres,并且postgres docker每隔一段时间会重置用户密码,但数据仍然保留。这会导致应用程序无法调用postgres db。每次我都必须访问ssh并运行ALTER USER postgres WITH PASSWORD ‘postgres’;来修复它,它可以正常运行一两天,甚至更长时间。
以下是错误发生前的日志:https://imgur.com/FxwiDMY
有没有人看到过类似的问题,或者知道是怎么回事?
我的docker-compose.yml:
version: '3.4'
services:
postgres:
image: postgres:latest
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=postgres
volumes:
- db-data:/var/lib/postgresql/data
ports:
- ${POSTGRES_PORT:-5432}:${POSTGRES_PORT:-5432}
redis:
...
web:
...
volumes:
db-data:
driver: local编辑:我从这里复制了措辞,因为这与我面临的问题完全相同。https://www.digitalocean.com/community/questions/postgres-docker-in-droplet-resets-user-password-on-its-own
我正在运行的应用程序是Django,我知道在settings.py中我得到了正确的密码- 'postgres'。这一定是docker/postgres组合错误,密码似乎是reset不时(每1-2天)。
Django日志:

发布于 2021-02-25 00:24:57
我猜是因为端口部分造成的。能帮我查一下这个link吗?也许这就是你的答案。并解决这个问题
ports:
- ${POSTGRES_PORT:-5432}:${POSTGRES_PORT:-5432}https://stackoverflow.com/questions/66353364
复制相似问题