has*_*bal 1 postgresql docker docker-compose
我正在尝试设置一个使用 postgres 数据库的网络服务。设置应该很简单,但我遇到了错误。因此,我要确保的第一件事是我设置的数据库确实存在并且正在运行。
为了测试这一点,我将“消费者”或“客户端”替换为 alpine 交互式 shell,如下所示:
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:
Run Code Online (Sandbox Code Playgroud)
然后我运行以下命令进入交互式 shell:
docker-compose run web
Run Code Online (Sandbox Code Playgroud)
以及以下命令来获取数据库:
apk --update add postgresql-client && rm -rf /var/cache/apk/*
psql -h db -U user db
Run Code Online (Sandbox Code Playgroud)
我从 postgresql 得到了明确的拒绝:
psql: FATAL: password authentication failed for user "user"
Run Code Online (Sandbox Code Playgroud)
我尝试的每个用户名/密码/数据库名组合都有相同的错误消息。没有多大帮助。
我在这里做错了什么?
您的docker-compose文件中有一个拼写错误。你POSTGRES这里拼错了:
POSTGES_USER=user
Run Code Online (Sandbox Code Playgroud)
这意味着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:
Run Code Online (Sandbox Code Playgroud)
启动环境:
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)
连接到web包含的并安装 postgresql 客户端:
$ docker attach project_web_1
/ # apk add --update postgresql-client
Run Code Online (Sandbox Code Playgroud)
然后我就可以毫无问题地连接了:
/ # psql -h db -U user db
Password for user user:
psql (11.2, server 10.1)
Type "help" for help.
db=#
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1589 次 |
| 最近记录: |