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

PostgreSQL Docker Compose本地挂载卷启动权限错误修复方法

修复PostgreSQL Docker容器启动的目录权限错误

问题原因

报错核心信息:FATAL: data directory "/var/lib/postgresql/data" has wrong ownership,这是因为你挂载的本地./data目录的所有者与容器内PostgreSQL进程运行的postgres用户(默认UID=999)不匹配,导致数据库进程无法读写数据目录。

解决方案

方案1:修改本地目录权限匹配容器用户

直接调整本地./data目录的所有者为容器内postgres用户的UID:

sudo chown -R 999:999 ./data

执行完成后重新启动容器:

docker compose up -d

方案2:使用Docker命名卷替代本地目录挂载

Docker命名卷会自动管理目录权限,无需手动调整。修改你的docker-compose.yml:

version: '3'
services:
  db:
    image: postgres:14.6
    restart: always
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data

# 添加命名卷定义
volumes:
  postgres_data:

修改后重新启动容器即可,数据会存储在Docker管理的卷中,避免权限问题。

方案3:自定义容器内postgres用户的UID/GID(开发环境适用)

如果你需要保持本地目录的所有者为当前用户,可以通过环境变量指定容器内postgres用户的UID/GID为你本地用户的UID/GID(执行id -u和id -g查看):

version: '3'
services:
  db:
    image: postgres:14.6
    restart: always
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_UID: 1000  # 替换为你的本地用户UID
      POSTGRES_GID: 1000  # 替换为你的本地用户GID
    volumes:
      - ./data:/var/lib/postgresql/data

注意:该特性需要PostgreSQL 12+版本的官方镜像支持,你的14.6版本可以正常使用。

内容的提问来源于stack exchange,提问作者Juan Carlos Gonzalez Quesada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:02:03