我正在尝试使用消耗Postgres数据库的Web服务进行安装。设置应该很简单,但出现错误。因此,我首先要确保的是我设置的数据库实际上已经存在并且正在运行。
要对此进行测试,我将“消费者”或“客户”替换为高山交互式外壳,如下所示:
version: '3'
services:
db:
image: postgres:10.1-alpine
container_name: db
expose:
- 5432
volumes:
- "dbdata:/var/lib/postgresql/data"
environment:
- POSTGES_USER=user
- POSTGRES_PASSWORD=pass
- POSTGRES_DB=db
web:
image: alpine:latest
stdin_open: true
tty: true
entrypoint: /bin/sh
depends_on:
- db
volumes:
dbdata:
然后我运行以下命令进入交互式外壳:
docker-compose run web
和以下命令进入数据库:
apk --update add postgresql-client && rm -rf /var/cache/apk/*
psql -h db -U user db
我从postgresql中得到了一个明确的拒绝:
psql: FATAL: password authentication failed for user "user"
我尝试的每个用户名/密码/数据库名称组合都出现相同的错误消息。没有太大的帮助。
我在这里做什么错了?
答案 0 :(得分:2)
您的docker-compose
文件中有错字。您在这里拼错了POSTGRES
:
POSTGES_USER=user
这意味着未创建user
用户。如果我纠正了错字,那么我可以:
version: '3'
services:
db:
image: postgres:10.1-alpine
expose:
- 5432
volumes:
- "dbdata:/var/lib/postgresql/data"
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=pass
- POSTGRES_DB=db
web:
image: alpine:latest
stdin_open: true
tty: true
entrypoint: /bin/sh
depends_on:
- db
volumes:
dbdata:
启动环境:
docker-compose up -d
附加到包含的web
并安装postgresql客户端:
$ docker attach project_web_1
/ # apk add --update postgresql-client
然后我可以毫无问题地连接:
/ # psql -h db -U user db
Password for user user:
psql (11.2, server 10.1)
Type "help" for help.
db=#