You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose部署中pgAdmin4无法访问共享卷问题排查

解决pgAdmin4无法访问挂载的/shared目录问题

问题原因

核心是权限不匹配:

  • pgAdmin4容器默认以pgadmin用户(UID=5050、GID=5050)运行,你挂载的/shared目录在容器内的所有者通常是root(UID=0),导致pgadmin用户没有读写权限,导入操作时无法识别该目录。
  • Mac Docker Desktop能看到路径,是因为Docker Desktop本身以系统高权限访问本地文件,但容器内的应用受自身运行用户的权限限制。

解决方法

方法1:调整权限适配pgAdmin运行用户

方式A:临时让pgAdmin以root用户运行(快速生效,不推荐生产环境)

修改docker-compose.yml中pgadmin服务的配置,添加user: root:

pgadmin:
  container_name: pgadmin4_container
  image: dpage/pgadmin4
  restart: always
  user: root  # 添加此行
  environment:
    PGADMIN_DEFAULT_EMAIL: admin@admin.com
    PGADMIN_DEFAULT_PASSWORD: root
  ports:
    - "5050:80"
  volumes:
    - ./shared:/shared

重启容器后,pgAdmin以root权限运行,即可正常访问/shared目录。

方式B:修改本地文件夹权限匹配pgAdmin用户

在Mac终端执行命令,把本地shared文件夹的权限改成pgAdmin容器内用户的UID/GID:

chown -R 5050:5050 ./shared

重新启动容器后,/shared目录在容器内的所有者就是pgadmin用户,可直接访问。

方法2:挂载到pgAdmin默认有权限的目录

pgAdmin4默认对/var/lib/pgadmin/storage目录有读写权限,修改挂载路径(注意替换邮件名的格式):

pgadmin:
  # 其他配置不变
  volumes:
    - ./shared:/var/lib/pgadmin/storage/admin_admin.com/shared

这里的admin_admin.com是把你的PGADMIN_DEFAULT_EMAIL(admin@admin.com)中的@和.替换成下划线后的格式。导入时,在pgAdmin的文件选择界面进入/var/lib/pgadmin/storage/admin_admin.com/shared就能找到备份文件。

方法3:进入容器手动修改目录权限

如果不想重启容器,先进入pgAdmin容器:

docker exec -it pgadmin4_container bash

然后修改/shared目录的权限:

chown -R pgadmin:pgadmin /shared

退出容器后,pgAdmin即可正常访问该目录。

内容的提问来源于stack exchange,提问作者Brad Rhoads

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 22:22:09