当前位置: 首页 > news >正文

Dify 社区版本地docker compose部署记录

文章目录

    • Dify 简介
    • Dify 用途
    • Docker Compose 部署
      • 前提条件
      • 克隆 Dify 代码仓库
      • 启动 Dify
      • 更新 Dify
        • 同步环境变量配置 (重要!)
      • 访问 Dify
      • 自定义配置
    • 踩坑
    • 参考资料

本地部署 Dify,按照官方文档操作,形成了这篇 部署踩坑记录。

Dify 简介

Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。

由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。

Dify 用途

Dify 一词源自 Define + Modify,意指定义并且持续的改进你的 AI 应用,它是为你而做的(Do it for you)。
  • 创业,快速的将你的 AI 应用创意变成现实,无论成功和失败都需要加速。在真实世界,已经有几十个团队通过 Dify 构建 MVP(最小可用产品)获得投资,或通过 POC(概念验证)赢得了客户的订单。
  • 将 LLM 集成至已有业务,通过引入 LLM 增强现有应用的能力,接入 Dify 的 RESTful API 从而实现 Prompt 与业务代码的解耦,在 Dify 的管理界面是跟踪数据、成本和用量,持续改进应用效果。
  • 作为企业级 LLM 基础设施,一些银行和大型互联网公司正在将 Dify 部署为企业内的 LLM 网关,加速 GenAI 技术在企业内的推广,并实现中心化的监管。
  • 探索 LLM 的能力边界,即使你是一个技术爱好者,通过 Dify 也可以轻松的实践 Prompt 工程和 Agent 技术,在 GPTs 推出以前就已经有超过 60,000 开发者在 Dify 上创建了自己的第一个应用。

Docker Compose 部署

前提条件

安装 Dify 之前, 请确保你的机器已满足最低安装要求:

  • CPU >= 2 Core
  • RAM >= 4 GiB
操作系统软件描述
macOS 10.14 or laterDocker Desktop为 Docker 虚拟机(VM)至少分配 2 个虚拟 CPU(vCPU) 和 8GB 初始内存,否则安装可能会失败。有关更多信息,请参考 《在 Mac 内安装 Docker 桌面端》。
Linux platforms

Docker 19.03 or later

Docker Compose 1.28 or later

请参阅安装 Docker 和安装 Docker Compose 以获取更多信息。
Windows with WSL 2 enabled

Docker Desktop

我们建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。有关更多信息,请参阅使用 WSL 2 后端在 Windows 上安装 Docker Desktop。

克隆 Dify 代码仓库

克隆 Dify 源代码至本地环境。

# 假设当前最新版本为 0.15.3
git clone https://github.com/langgenius/dify.git --branch 0.15.3

或克隆仓库当前版本:

git clone https://github.com/langgenius/dify.git

启动 Dify

  1. 进入 Dify 源代码的 Docker 目录

    cd dify/docker
    
  2. 复制环境配置文件

直接试用示例配置,即将.env.example文件复制或命名为.env供Dify使用。

cp .env.example .env
  1. 启动 Docker 容器

    根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。你可以通过 $ docker compose version 命令检查版本,详细说明请参考 Docker 官方文档:

    • 如果版本是 Docker Compose V2,使用以下命令:
    docker compose up -d
    
    • 如果版本是 Docker Compose V1,使用以下命令:
    docker-compose up -d
    

运行命令后,你应该会看到类似以下的输出,显示所有容器的状态和端口映射:

[+] Running 11/11✔ Network docker_ssrf_proxy_network  Created                                                                 0.1s ✔ Network docker_default             Created                                                                 0.0s ✔ Container docker-redis-1           Started                                                                 2.4s ✔ Container docker-ssrf_proxy-1      Started                                                                 2.8s ✔ Container docker-sandbox-1         Started                                                                 2.7s ✔ Container docker-web-1             Started                                                                 2.7s ✔ Container docker-weaviate-1        Started                                                                 2.4s ✔ Container docker-db-1              Started                                                                 2.7s ✔ Container docker-api-1             Started                                                                 6.5s ✔ Container docker-worker-1          Started                                                                 6.4s ✔ Container docker-nginx-1           Started                                                                 7.1s

最后检查是否所有容器都正常运行:

docker compose ps

在这个输出中,你应该可以看到包括 3 个业务服务 api / worker / web,以及 6 个基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox

NAME                  IMAGE                              COMMAND                   SERVICE      CREATED              STATUS                        PORTS
docker-api-1          langgenius/dify-api:0.6.13         "/bin/bash /entrypoi…"   api          About a minute ago   Up About a minute             5001/tcp
docker-db-1           postgres:15-alpine                 "docker-entrypoint.s…"   db           About a minute ago   Up About a minute (healthy)   5432/tcp
docker-nginx-1        nginx:latest                       "sh -c 'cp /docker-e…"   nginx        About a minute ago   Up About a minute             0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
docker-redis-1        redis:6-alpine                     "docker-entrypoint.s…"   redis        About a minute ago   Up About a minute (healthy)   6379/tcp
docker-sandbox-1      langgenius/dify-sandbox:0.2.1      "/main"                   sandbox      About a minute ago   Up About a minute             
docker-ssrf_proxy-1   ubuntu/squid:latest                "sh -c 'cp /docker-e…"   ssrf_proxy   About a minute ago   Up About a minute             3128/tcp
docker-weaviate-1     semitechnologies/weaviate:1.19.0   "/bin/weaviate --hos…"   weaviate     About a minute ago   Up About a minute             
docker-web-1          langgenius/dify-web:0.6.13         "/bin/sh ./entrypoin…"   web          About a minute ago   Up About a minute             3000/tcp
docker-worker-1       langgenius/dify-api:0.6.13         "/bin/bash /entrypoi…"   worker       About a minute ago   Up About a minute             5001/tcp

通过这些步骤,你可以在本地成功安装 Dify。

更新 Dify

进入 dify 源代码的 docker 目录,按顺序执行以下命令:

cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d
同步环境变量配置 (重要!)
  • 如果 .env.example 文件有更新,请务必同步修改你本地的 .env 文件。
  • 检查 .env 文件中的所有配置项,确保它们与你的实际运行环境相匹配。你可能需要将 .env.example 中的新变量添加到 .env 文件中,并更新已更改的任何值。

访问 Dify

你可以先前往管理员初始化页面设置设置管理员账户:

# 本地环境
http://localhost/install# 服务器环境
http://your_server_ip/install

Dify 主页面:

# 本地环境
http://localhost# 服务器环境
http://your_server_ip

自定义配置

编辑 .env 文件中的环境变量值。然后重新启动 Dify:

docker compose down
docker compose up -d

完整的环境变量集合可以在 docker/.env.example 中找到。

踩坑

按照文档操作过程中,因为网络的原因踩了“Internal Server Error”即500错误的坑,如下图:
内部错误

根据资料2,修改Docker Destop设置:
设置(Settings)->Docker引擎(Docker Engine)。
Docker Destop设置按钮
引擎设置
在Docker Engine中添加以下镜像列表:

  "registry-mirrors": ["https://docker.registry.cyou","https://registry.docker-cn.com","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc"]

应用并重启容器(点击Apply & restart按钮),完成配置更新,解决该问题。
解决问题

参考资料

1. Dify官方文档
2. Dify Internal Server Error 内部错误讨论

http://www.xdnf.cn/news/945163.html

相关文章:

  • Docker环境下安装 Elasticsearch + IK 分词器 + Pinyin插件 + Kibana(适配7.10.1)
  • uni-app学习笔记三十五--扩展组件的安装和使用
  • A2A JS SDK 完整教程:快速入门指南
  • Linux线程互斥与竞态条件解析
  • LeetCode Hot100刷题——三数之和
  • 2025企业级采购系统深度评测:AI技术如何助力采购成本直降40%?
  • Python训练营-Day26-函数专题1:函数定义与参数
  • 从实验室到产业:IndexTTS 在六大核心场景的落地实践
  • 影子栈指针是什么?
  • 原型模式深度解析:Java设计模式实战指南与克隆机制优化实践
  • 一种使用 PowerToys 的键盘管理器工具重新映射按键实现在 Windows 上快捷输入字符的方式
  • 在Spring Boot中集成RabbitMQ的完整指南
  • vue3+vite+pnpm项目 使用monaco-editor常见问题
  • 数据结构篇--分离链表vs线性探测
  • Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
  • laravel8+vue3.0+element-plus搭建方法
  • Hugging Face、魔塔社区(MOTA)与OpenRouter:AI模型平台深度对比与实战指南
  • (七) 深度学习进阶:现代卷积神经网络技术解析与应用实践
  • <STC32G12K128入门第十九步>QT串口ISP更新上位机
  • Spring 框架(1)
  • 题山采玉:Day3
  • 3D Web轻量化引擎HOOPS Communicator赋能一线场景,支持本地化与动态展示?
  • 如何手撸一个最小化操作系统:从 0 到 1 掌握汇编-文件管理-内存页表-文件系统-上下文切换算法 MIT 经典教程 结合豆包ai
  • 如何控制electron的应用在指定的分屏上打开[特殊字符]
  • 计算机技术、互联网与 IT 前沿:量子计算、Web3.0 等趋势洞察及行业应用
  • 第21节 Node.js 多进程
  • WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
  • GraphQL 实战篇:Apollo Client 配置与缓存
  • 技能伤害继承英雄属性【War3地图编辑器】进阶
  • 数据结构 - 栈与队列