我的版本是虚拟机镜像CentOS-Stream-9-20260309.0-x86_64-dvd1 Docker version25.0.3 Docker Compose version v2.24.6 dify-1.15.0最近尝试在本地部署dify从官网拉在最新的版本根据文档cp.env文件后直接docker compose up -d启动结果db_postgres没起来遇到了权限问题。之后找了很多解决方案比如将./volumes/db/data:/var/lib/postgresql/data改为/volumes/db/data:/var/lib/postgresql/data但是依然还是报错。后面尝试了docker数据卷挂载的的方法解决了这个问题。db_postgres: volumes: - pgdata:/var/lib/postgresql/data注意下面的这个要顶格volumes: pgdata:成功解决了mkdir: cant create directory /var/lib/postgresql/data/pgdata: Permission denied的问题。但是新的问题又出现了。db_postgres-1|Data page checksums are disabled. db_postgres-1|db_postgres-1|fixing permissions on existing directory /var/lib/postgresql/data/pgdata... ok db_postgres-1|creating subdirectories... ok db_postgres-1|selecting dynamic shared memory implementation... posix db_postgres-1|selecting default max_connections...100db_postgres-1|selecting default shared_buffers... 128MB db_postgres-1|selecting defaulttimezone... UTC db_postgres-1|creating configuration files... ok db_postgres-1|2026-07-0414:40:44.161 UTC[34]LOG: could notwritetofilepostmaster.pid:Operation not permitted db_postgres-1|2026-07-0414:40:44.168 UTC[34]FATAL: could notwritetofilepg_wal/xlogtemp.34:Operation not permitted db_postgres-1|child process exited withexitcode1db_postgres-1|initdb: removing contents of data directory/var/lib/postgresql/data/pgdataPostgreSQL 官方镜像出于安全策略默认以 postgres 用户UID 为 999运行并严格要求数据目录必须由该用户拥有。当你在 docker-compose.yml 中使用绑定挂载Bind Mount将宿主机的目录映射到容器内的/var/lib/postgresql/data时如果宿主机上的目录是由 root 或其他用户创建的容器内的 postgres 用户就没有权限在该目录下创建 pgdata 子文件夹从而导致启动失败。无论是在宿主机上将挂载目录的所有者强制修改为 999:999还是在在 docker-compose.yml 中指定运行用户还是使用命名卷。都无法解决这个问题。最后排查了很久发现是在某些特定版本的 CentOS 内核上Docker 默认的 Seccomp 策略可能会“误杀”这些正常的底层调用导致数据库报出极其误导人的Operation not permitted错误。解决方案加上这个配置security_opt: - seccomp:unconfined参考db_postgres: volumes: - pgdata:/var/lib/postgresql/data security_opt: - seccomp:unconfinedseccomp:unconfined的核心作用是完全解除容器对系统调用Syscalls的限制让容器内的进程能够调用所有的底层系统命令。虽然它解决了兼容性问题但也会带来一定的安全隐患一旦黑客利用漏洞攻破了容器由于没有 Seccomp 的拦截他们可以自由调用高危系统调用从而极大地增加了攻击宿主机的风险。安全扫描工具如华为云 HSS在检测到 seccompunconfined 时通常会触发“容器环境启动风险”告警。如果有大佬有其他解决办法请在评论区里讨论。