如何解决pgadmin4 不会更改 docker compose 中的默认电子邮件和密码
我正在尝试使用 docker-compose 为开发目的设置 postgres 环境。我创建了一个 docker-compose 文件,上面有 postgress 和 pgadmin4,但挑战是即使在设置环境后我也无法登录或更改 pgadmin 的默认电子邮件和密码。
version: "3"
services:
postgresql:
container_name: postgres
image: postgres
command: postgres -c config_file=/etc/postgresql/postgresql.conf
restart: always
tty: true
environment:
POSTGRES_USER: '${POSTGRES_USER}'
POSTGRES_PASSWORD: '${POSTGRES_PASSWORD}'
networks:
- postgres
ports:
- 5400:5432
expose:
- '5400'
volumes:
- ./docker/db/conf/postgresql.conf:/etc/postgresql/postgresql.conf
- ./docker/db/data:/var/lib/postgresql/data
- ./docker/db/sql:/docker-entrypoint-initdb.d
pgadmin:
container_name: pgadmin
image: "dpage/pgadmin4:4.24"
tty: true
environment:
PGADMIN_DEFAULT_EMAIL: '${PGADMIN_DEFAULT_EMAIL}'
PGADMIN_DEFAULT_PASSWORD: '${PGADMIN_DEFAULT_PASSWORD}'
PGADMIN_CONfig_SERVER_MODE: '${PGADMIN_CONfig_SERVER_MODE}'
PGADMIN_CONfig_MASTER_PASSWORD_required: '${PGADMIN_CONfig_MASTER_PASSWORD_required}'
networks:
- postgres
ports:
- 15433:80
expose:
- '15433'
entrypoint:
- "/bin/sh"
- "-c"
- "/bin/echo 'postgres:5432:*:postgres:password' > /tmp/pgpassfile && chmod 600 /tmp/pgpassfile && /entrypoint.sh"
restart: unless-stopped
volumes:
- ./docker/pgadmin:/var/lib/pgadmin
- ./docker_pgadmin_servers.json:/pgadmin4/servers.json
depends_on:
- postgresql
links:
- postgresql
networks:
postgres:
driver: bridge
pgadmin 窗口在浏览器中加载并提示我输入 postgres 密码,但我输入时说它无效:
FATAL: password authentication Failed for user "postgres"
这是日志中的错误:
| 2021-07-30 08:40:37.733 UTC [33] DETAIL: Role "postgres" does not exist.
postgres | Connection matched pg_hba.conf line 99: "host all all all md5"
pgadmin | 2021-07-30 08:40:37,733: ERROR flask.app: Could not connect to server(#1) - 'Docker Compose'.
pgadmin | Error: FATAL: password authentication Failed for user "postgres"
pgadmin | password retrieved from file "/tmp/pgpassfile"
这是我的servers.json文件
{
"Servers": {
"1": {
"Name": "Docker Compose","Group": "Servers","Port": 5432,"Username": "postgres","Host": "postgres","SSLMode": "prefer","MaintenanceDB": "postgres","PassFile": "/tmp/pgpassfile"
}
}
}
请问我会遗漏什么?
解决方法
我想通了。与数据库用户中的拼写错误有关。 posgress 而不是 postgres。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。