在 Ubuntu24.04 LTS 上 Docker Compose 部署 Dify 社区版 1.0.1

一、Dify 简介


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

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

        中文官网地址:https://dify.ai/zh
        英文官网地址:https://dify.ai
        官方云服务地址(国内一般正常打不开,懂的都懂):https://cloud.dify.ai/
        开发文档:https://docs.dify.ai/zh-hans
        开源地址:https://github.com/langgenius/dify

二、为什么使用 Dify?

你或许可以把 LangChain 这类的开发库(Library)想象为有着锤子、钉子的工具箱。与之相比,Dify 提供了更接近生产需要的完整方案,Dify 好比是一套脚手架,并且经过了精良的工程设计和软件测试。

重要的是,Dify 是开源的,它由一个专业的全职团队和社区共同打造。你可以基于任何模型自部署类似 Assistants API (Assistants API 是 OpenAI 提供的一种接口,允许开发者在自己的应用程序中构建 AI 助手;助手能够遵循指令,并利用模型、工具和知识来响应用户的查询)和 GPTs (GPTs 是 ChatGPT 的定制版本,用户可以通过结合指令、知识和能力,针对特定任务或主题进行调整)的能力,在灵活和安全的基础上,同时保持对数据的完全控制。


三、什么是 LLMOps?

        LLMOps(Large Language Model Operations)是一个涵盖了大型语言模型(如GPT系列)开发、部署、维护和优化的一整套实践和流程。LLMOps 的目标是确保高效、可扩展和安全地使用这些强大的 AI 模型来构建和运行实际应用程序。它涉及到模型训练、部署、监控、更新、安全性和合规性等方面。

        下表说明了使用 Dify 前后开发 AI 应用的各环节差异:

        在使用 LLMOps 平台如 Dify 之前,基于 LLM 开发应用的过程可能会非常繁琐和耗时。开发者需要自行处理各个阶段的任务,这可能导致效率低下、难以扩展和安全性问题。以下是使用 LLMOps 平台前的开发过程:

        1.数据准备:手动收集和预处理数据,可能涉及到复杂的数据清洗和标注工作,需要编写较多代码。

        2.Prompt Engineering:开发者只能通过调用 API 或 Playground 进行 Prompt 编写和调试,缺乏实时反馈和可视化调试。

        3.嵌入和上下文管理:手动处理长上下文的嵌入和存储,难以优化和扩展,需要不少编程工作,熟悉模型嵌入和向量数据库等技术。

        4.应用监控与维护:手动收集和分析性能数据,可能无法实时发现和处理问题,甚至可能没有日志记录。

        5.模型微调:自行处理微调数据准备和训练过程,可能导致效率低下,需要编写更多代码。

        6.系统和运营:需要技术人员参与或花费成本开发管理后台,增加开发和维护成本,缺乏多人协同和对非技术人员的友好支持。

        引入 Dify 这样的 LLMOps 平台后,基于 LLM 开发应用的过程将变得更加高效、可扩展和安全。以下是使用像 Dify 这样的 LLMOps 进行 LLM 应用开发的优势:

        1.数据准备:平台提供数据收集和预处理工具,简化了数据清洗和标注的工作,最小化甚至消除了编码工作。
        2.Prompt Engineering:所见即所得的 Prompt 编辑和调试,可根据用户输入的数据进行实时优化和调整。
        3.嵌入和上下文管理:自动处理长上下文的嵌入、存储和管理,提高效率和扩展性,无需编写大量代码。
        4.应用监控与维护:实时监控性能数据,快速发现和处理问题,确保应用程序的稳定运行,提供完整的日志记录。
        5.微调数据准备:提供人工标注知识库的批量导出,在应用运营过程中收集线上反馈数据持续改善模型效果。
        6.系统和运营:易用的界面,非技术人员也可参与,支持多人协同,降低开发和维护成本。与传统开发方式相比,Dify 提供了更加透明和易于监控的应用管理,让团队成员更好地了解应用的运行情况。

        另外,Dify 将提供 AI 插件开发和集成的功能,使得开发者可以轻松地为各种应用创建和部署基于 LLM 的插件,进一步提升了开发效率和应用的价值。

四、Dify 社区版 1.0.1 版本部署


        Dify 社区版即开源版本,常见的有两种方式部署 Dify 社区版;一种是 Docker Compose 部署 ,另一种是本地源码启动。本次以  Docker Compose 部署 示例,在 GitHub 上查看 Dify 社区版:

        Dify 的 releases 发行版本下载页面:

4.1 安装环境信息说明

        硬件资源(GB 和 GiB 的主要区别在于它们的换算基数不同,GB 使用十进制,GiB 使用二进制,导致相同数值下 GiB 表示的容量略大于 GB;换算关系:1 GiB ≈ 1.07374 GB ;1 GB ≈ 0.931323 GiB):CPU8核、内存16GiB、磁盘100GB

        Linux 系统:Ubuntu24.04 LTS
        Git 版本:2.43.0
        Docker 版本:28.0.1
        Docker Compose 版本:2.33.1

4.2 克隆 Dify 代码仓库

        在Ubuntu上选择需要存放代码的目录,然后在当前目录下,克隆 Dify 源代码至本地环境(虽然我们选择的是1.0.1版本,但是有bug修复是官方会拉出修复分支;所以,我们选择当下最新的修复分支,当前是:release/1.0.1-fix1)。操作如下命令:

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

# Git 参数设置,规避https协议拉取代码失败
git config --global http.sslVerify false
git config --global http.postBuffer 1048576000
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999

        备注:http.sslVerify false 会禁用 HTTPS 的 SSL 证书验证,虽然能绕过某些证书错误,但会降低安全性。建议仅在测试环境或受信任的仓库使用,生产环境请修复证书问题

4.3 克隆完毕后,启动服务 Dify1.0.1 社区版服务

        (1)为了确保完整,克隆完毕进入仓库根目录,在执行下拉取更新操作

git pull origin release/1.0.1-fix1

        (2)进入 Dify 源代码仓库根目录下的 Docker 目录

cd /home/redhat/MyDify/dify1.0.1/dify/
cd docker

        (3)复制环境配置文件

cp .env.example .env

          (4)启动 Docker 容器
        根据系统上的 Docker Compose 版本,选择合适的命令来启动容器。可以通过 $ docker compose version 命令检查版本,详细说明请参考 Docker 官方文档【https://docs.docker.com/compose/#compose-v2-and-the-new-docker-compose-command】:

        如果版本是 Docker Compose V2,使用以下命令:

docker compose up -d

        如果版本是 Docker Compose V1,使用以下命令:

docker-compose up -d

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


        在这个输出中,你应该可以看到包括 3 个业务服务 api / worker / web,以及 7 个(1.0.1版本比0.15.3多一个服务,把插件拆分出来了)基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox / plugin-daemon 。

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

docker compose ps

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

五、更新 Dify 操作注意点

        进入 dify 源代码所在 Ubuntu24.04 LTS 的 docker 目录,按顺序执行以下命令:

cd /home/redhat/MyDify/dify1.0.1/dify
cd docker
docker compose down
# 这个 release/1.0.1-fix1 分支并不是绝对不变的,需要从那个分支更新合并到本地就用那个分支的名字
git pull origin release/1.0.1-fix1
docker compose pull
docker compose up -d

        检查 .env 文件中的所有配置项,确保它们与实际运行环境相匹配。如果 .env.example 文件有更新,必须同步修改本地的 .env 文件(可能需要将 .env.example 中的新变量添加到 .env 文件中,并更新已更改的任何值,同步环境变量配置)。如果涉及更新,那编辑 .env 文件中的环境变量值后,需要重新构建,重新启动 Dify:

docker compose down
docker compose up -d

六、访问 Dify

6.1 先前往管理员初始化页面设置设置管理员账户

# Ubuntu24.04 LTS 本地环境
http://localhost/install

# 服务器环境
http://your_server_ip/install

6.2 设置号管理员账号后(也可以登录后设置其他权限的账号),登录访问 Dify 系统登录页面

# 本地环境
http://localhost

# 服务器环境
http://your_server_ip

--------------------------------------

没有自由的秩序和没有秩序的自由,同样具有破坏性。

### 安装 Docker 为了在 Ubuntu 上通过 Docker 安装和配置 Dify,首先需要确保 Docker 已经正确安装并运行。如果尚未安装 Docker 或者希望重新安装,则可以按照以下方法操作。 #### 卸载旧版本 Docker 如果有之前版本的 Docker 需要先将其卸载: ```bash sudo apt-get remove docker docker-engine docker.io containerd runc ``` 这一步骤会移除旧版 Docker 及其相关组件[^1]。 #### 设置 Docker 的 APT 仓库 更新 apt 包索引并安装必要的包以便能够使用 HTTPS 来访问 Docker 的仓库: ```bash sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release ``` 添加 Docker 的官方 GPG 密钥: ```bash curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg ``` 设置稳定版存储库: ```bash echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` #### 安装最新版本的 Docker Engine 更新 apt 包索引,并安装最新的 Docker 版本: ```bash sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io ``` 验证 Docker 是否成功安装以及正常工作: ```bash sudo docker run hello-world ``` 以上命令下载了一个测试镜像并在容器中执行它来确认环境已经准备好。 ### 使用 Docker 安装和配置 Dify 完成上述步骤之后就可以准备部署 Dify 应用了。假设读者已经有了一个可用的工作目录用于放置项目文件,在该路径下创建一个新的 `docker-compose.yml` 文件定义服务需求如下所示: ```yaml version: '3' services: app: image: dify/dify-app:latest ports: - "8080:80" environment: DATABASE_URL: postgresql://user:password@db:5432/dbname?sslmode=disable volumes: db_data: ``` 此配置假定数据库连接字符串中的用户名、密码和其他参数已经被适当替换为实际值。对于生产环境中建议加密敏感数据而不是明文形式保存于源码控制之下。 启动应用和服务可以通过下面这条简单的指令实现: ```bash docker-compose up -d ``` 此时应该可以在浏览器里打开 http://localhost:8080 访问到新搭建好的 Dify 实例了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值