Dify Docker私有化部署遇到的问题及解决

 更新时间:2026年01月31日 15:24:23   作者:mengyanyuan8023  
Dify 1.01 在 Docker Desktop 4.38.0 上部署时,db 无法启动,权限问题导致,解决方法是修改 `docker-compose.yaml` 文件,为 `db` 配置正确的权限,并创建一个名为 `postgres-data101` 的 Volume 区

Dify 版本为1.01,本地使用 docker desktop,版本为4.38.0 (181591),以下是Dify部署及使用过程中遇到的问题,后续持续更新...

db无法启动

一直提示:

Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).

具体日志如下:

​在windows11下部署dify报错

db-1  | The files belonging to this database system will be owned by user "postgres".
db-1  | This user must also own the server process.
db-1  |
db-1  | The database cluster will be initialized with locale "en_US.utf8".
db-1  | The default database encoding has accordingly been set to "UTF8".
db-1  | The default text search configuration will be set to "english".
db-1  |
db-1  | Data page checksums are disabled.
db-1  |
db-1  | fixing permissions on existing directory /var/lib/postgresql/data/pgdata ... ok
db-1  | creating subdirectories ... ok
db-1  | selecting dynamic shared memory implementation ... posix
db-1  | selecting default max_connections ... 20
db-1  | selecting default shared_buffers ... 400kB
db-1  | selecting default time zone ... UTC
db-1  | creating configuration files ... ok
db-1  | 2025-02-28 16:06:21.008 UTC [63] FATAL:  data directory "/var/lib/postgresql/data/pgdata" has invalid permissions
db-1  | 2025-02-28 16:06:21.008 UTC [63] DETAIL:  Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).
db-1  | child process exited with exit code 1
db-1  | initdb: removing contents of data directory "/var/lib/postgresql/data/pgdata"
db-1 exited with code 1

具体原因日志中已经给出,如下:

db-1  | 2025-02-28 16:06:21.008 UTC [63] FATAL:  data directory "/var/lib/postgresql/data/pgdata" has invalid permissions
db-1  | 2025-02-28 16:06:21.008 UTC [63] DETAIL:  Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).

解决办法

修改 docker-compose.yaml 文件,找到 db 的配置,初始配置如下:

 # The postgres database.
  db:
    image: postgres:15-alpine
    restart: always
    environment:
      PGUSER: ${PGUSER:-postgres}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-difyai123456}
      POSTGRES_DB: ${POSTGRES_DB:-dify}
      PGDATA: ${PGDATA:-/var/lib/postgresql/data/pgdata}
    command: >
      postgres -c 'max_connections=${POSTGRES_MAX_CONNECTIONS:-100}'
               -c 'shared_buffers=${POSTGRES_SHARED_BUFFERS:-128MB}'
               -c 'work_mem=${POSTGRES_WORK_MEM:-4MB}'
               -c 'maintenance_work_mem=${POSTGRES_MAINTENANCE_WORK_MEM:-64MB}'
               -c 'effective_cache_size=${POSTGRES_EFFECTIVE_CACHE_SIZE:-4096MB}'
    volumes:
      - ./volumes/db/data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    healthcheck:
      test: [ 'CMD', 'pg_isready' ]
      interval: 1s
      timeout: 3s
      retries: 30

将其修改为:

 # The postgres database.
  db:
    image: postgres:15-alpine
    restart: always
    environment:
      PGUSER: ${PGUSER:-postgres}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-difyai123456}
      POSTGRES_DB: ${POSTGRES_DB:-dify}
      PGDATA: ${PGDATA:-/var/lib/postgresql/data/pgdata}
    command: >
      postgres -c 'max_connections=${POSTGRES_MAX_CONNECTIONS:-100}'
               -c 'shared_buffers=${POSTGRES_SHARED_BUFFERS:-128MB}'
               -c 'work_mem=${POSTGRES_WORK_MEM:-4MB}'
               -c 'maintenance_work_mem=${POSTGRES_MAINTENANCE_WORK_MEM:-64MB}'
               -c 'effective_cache_size=${POSTGRES_EFFECTIVE_CACHE_SIZE:-4096MB}'
    #volumes:
    #  - ./volumes/db/data:/var/lib/postgresql/data
    volumes:
      - postgres-data101:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    healthcheck:
      test: [ 'CMD', 'pg_isready' ]
      interval: 1s
      timeout: 3s
      retries: 30

这里创建了一个名为postgres-data101的 Volume 区,然后在文件最底部添加该 Volume 区:

volumes:
  oradata:
  dify_es01_data:
  postgres-data101:

Docker重新启动后Dify需要重新初始化

该问题可以用上面的方式解决,根本原因都是因为 Volume 挂在异常。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用Docker Swarm 搭建Wordpress的方法

    使用Docker Swarm 搭建Wordpress的方法

    这篇文章主要介绍了使用Docker Swarm 搭建Wordpress的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • docker(alpine+golang) 中 hosts 不生效问题解决方法

    docker(alpine+golang) 中 hosts 不生效问题解决方法

    这篇文章主要介绍了docker(alpine+golang) 中 hosts 不生效问题解决大全,本文给大家分享了三种解决方法,每种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Docker容器的创建、启动、和停止的方法

    Docker容器的创建、启动、和停止的方法

    这篇文章主要介绍了Docker容器的创建、启动、和停止的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • CentOS 7.2 下安装 Docker 1.12.3 版的详细方法

    CentOS 7.2 下安装 Docker 1.12.3 版的详细方法

    这篇文章主要介绍了CentOS 7.2 安装 Docker 1.12.3 版的相关资料,本文分步骤给大家介绍了CentOS 7.2 下安装 Docker 1.12.3 版的详细方法,需要的朋友可以参考下
    2016-11-11
  • Docker关键文件误删恢复的全面指南

    Docker关键文件误删恢复的全面指南

    在使用 Docker 时,某些关键文件被误删可能会导致 Docker 服务无法启动,本文将讲解 Docker 在遭遇误删的常见问题,并介绍如何恢复丢失的关键文件,需要的朋友可以参考下
    2025-10-10
  • 教你如何利用docker-maven-plugin自动化部署

    教你如何利用docker-maven-plugin自动化部署

    本文通过两个例子给大家讲解如何利用docker-maven-plugin自动化部署,给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-09-09
  • Docker如何多步构建生成dubbo-admin镜像详解

    Docker如何多步构建生成dubbo-admin镜像详解

    dubbo-admin是dubbo框架的管理平台,下面这篇文章主要给大家介绍了关于Docker如何多步构建生成dubbo-admin镜像的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2018-04-04
  • docker安装openwrt immortalwrt全过程

    docker安装openwrt immortalwrt全过程

    本文主要介绍了如何通过OpenWrt和Docker结合使用,以提供路由器的功能并接管无法安装软件的Switch的流量,首先,通过阿里镜像加速下载并安装Docker,然后配置网络,包括开启网卡混杂模式和创建虚拟网络MACVLAN,接着,在OpenWrt中配置网络,最后拉取OpenWrt镜像并启动
    2024-10-10
  • 利用Docker制作Nginx+PHP镜像的步骤详解

    利用Docker制作Nginx+PHP镜像的步骤详解

    Nginx是一个高性能的Web和反向代理服务器,它具有很多非常优越的特性,那么这篇文章小编就分步骤向大家介绍如何利用Docker制作Nginx+PHP的镜像,文章介绍的很详细,对大家具有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。
    2016-10-10
  • Docker运行临时镜像容器的实现

    Docker运行临时镜像容器的实现

    本文主要介绍了基于Docker进行镜像构建或排查问题时的两种调试方法,对于普通应用镜像,可以直接运行并进入容器内部进行调试,如MySQL、Redis等,对于基础镜像,由于它们会默认启动自己的进程,直接启动容器会导致生命周期结束,感兴趣的可以了解一下
    2026-01-01

最新评论