问题描述
我正在使用以下图像 https://hub.docker.com/r/dpage/pgadmin4/ 在 Ubuntu 18-04 上设置 pgAdmin4。
我已经挂载了一个包含 pgpass
文件的卷(对于容器内的 chmod
用户也是 pgadmin
),正如您在我的 Compose 文件中看到的:
version: '3.8'
services:
pgadmin4:
image: dpage/pgadmin4
container_name: pgadmin4
environment:
- PGADMIN_DEFAULT_EMAIL=me@localhost
- PGADMIN_DEFAULT_PASSWORD=******************
- PGADMIN_LISTEN_PORT=5050
- PGADMIN_SERVER_JSON_FILE=servers.json
volumes:
- ./config/servers.json:/pgadmin4/servers.json # <-- this file is well taken into account
- ./config/pgpass:/pgpass # <- there is no way to find this one on the other hand
ports:
- "5000:5000"
restart: unless-stopped
network_mode: host
但是当我右键单击服务器并检查其高级属性时,它似乎无法从 pgadmin 网页中识别出来:
如果我在图像中只有斜线的顶部绿色框中手动指定 /pgpass
,它会说:
/ $ ls -larth /pgpass
-rw------- 1 pgadmin pgadmin 574 Mar 10 22:37 /pgpass
我做错了什么?
如何让应用程序识别 pgpass
文件?
解决方法
这里的问题似乎是 '/'
文件中的 servers.json
并不意味着文件系统中的 '/'
,而是与配置中设置的 STORAGE_DIR
相关的东西。实际上,为每个用户创建了一个单独的存储目录,因此对于您的用户 me@localhost
,您必须将 ./config/pgpass
挂载到 /var/lib/pgadmin4/storage/me_localhost/pgpass
,但仍将其称为 /pgpass
在您的servers.json
中。