我正在编写一个docker-compose文件来启动一些服务,但是db服务总是会出问题,我经常会收到以下错误:
FATAL: password authentication failed for user "postgres"
DETAIL: 密码不符合用户 "postgres"。
匹配连接的pg_hba.conf第95行:“host all all all md5”
我已经阅读了很多帖子,并且已经正确设置了POSTGRES_USER和POSTGRES_PASSWORD。我还删除了之前的卷和容器,以强制postgresql重新初始化密码。但是我想不出为什么它仍然无法正常工作。
那么,强制重新初始化postgresql镜像的正确方法是什么呢?这样我就可以连接到我的数据库了。
我看到了这个错误:Connection matched pg_hba.conf line 95: "host all all all md5"
,我也听说过postgres conf文件。但这是官方容器,应该可以正常工作,对吧?
version: '3'
services:
poll:
build: poll
container_name: "poll"
ports:
- "5000:80"
networks:
- poll-tier
environment:
- REDIS_HOST=redis
depends_on:
- redis
worker:
build: worker
container_name: "worker"
networks:
- back-tier
environment:
- REDIS_HOST=redis
- POSTGRES_HOST=db
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=root
depends_on:
- redis
- db
redis:
image: "redis:alpine"
container_name: "redis"
networks:
- poll-tier
- back-tier
result:
build: result
container_name: "result"
ports:
- "5001:80"
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=root
- POSTGRES_HOST=db
- RESULT_PORT=80
networks:
- result-tier
depends_on:
- db
db:
image: "postgres:alpine"
container_name: "db"
restart: always
networks:
- back-tier
- result-tier
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=root
- POSTGRES_DB=postgres
volumes:
db-data:
driver: local
networks:
poll-tier: {}
back-tier: {}
result-tier: {}
我需要将数据库连接起来,而不是出现用户“postgres”的密码认证失败
。
db
容器,安装postgres,然后尝试psql -h db -c "select 1" postgres postgres
吗?我很想知道应用程序是否存储了错误的密码。 - richyen