Dify在Ubuntu20.04系统的部署

文章目录

一、dify 介绍

Dify 是一款开源的大语言模型(LLM)智能体开发平台,可以用于快速搭建个性化或具备商业价值的智能体。

1.核心功能优势

(1)丰富的功能组件

AI 工作流:通过可视化画布构建和测试强大的 AI 工作流

RAG 管道:支持从文档摄入到检索的完整流程,可从 PDF、PPT 等常见格式中提取文本

Agent 智能体:基于 LLM 的推理能力,可以自主规划任务、调用工具,完成复杂任务

模型管理:支持数百种专有和开源的 LLM,如GPT、 Deepseek r1、Llama3 等,并提供模型性能比较功能

(2)工具集成

Dify 提供了 50 多种内置工具(如谷歌搜索、DALL·E、Stable Diffusion 等),并允许自定义模型接入

2.应用场景

智能客服与对话助手:通过自然语言处理技术快速响应用户咨询,支持上下文记忆和多轮对话设计。

内容生成与文档处理:自动生成文章、摘要、代码,或解析长文档进行结构化提取。

商业智能与数据分析:结合企业数据库,生成数据报告或提供决策建议。

二、dify 安装(docker方式)

1.代码库下载

shell 复制代码
git clone https://github.com/langgenius/dify 

下载后目录如下所示

shell 复制代码
drwxrwxr-x 11 allyoung allyoung  4096 Feb 24 03:33 ./
drwxrwxr-x 10 allyoung allyoung  4096 Feb 24 03:32 ../
drwxrwxr-x 22 allyoung allyoung  4096 Feb 24 03:33 api/
-rw-rw-r--  1 allyoung allyoung    56 Feb 24 03:33 AUTHORS
-rw-rw-r--  1 allyoung allyoung  9301 Feb 24 03:33 CONTRIBUTING_CN.md
-rw-rw-r--  1 allyoung allyoung 12656 Feb 24 03:33 CONTRIBUTING_JA.md
-rw-rw-r--  1 allyoung allyoung  9948 Feb 24 03:33 CONTRIBUTING.md
-rw-rw-r--  1 allyoung allyoung 12341 Feb 24 03:33 CONTRIBUTING_VI.md
drwxrwxr-x  3 allyoung allyoung  4096 Feb 24 03:33 dev/
drwxrwxr-x  2 allyoung allyoung  4096 Feb 24 03:33 .devcontainer/
drwxrwxr-x 10 allyoung allyoung  4096 Feb 24 03:33 docker/
drwxrwxr-x  8 allyoung allyoung  4096 Feb 24 03:33 .git/
-rw-rw-r--  1 allyoung allyoung   338 Feb 24 03:33 .gitattributes
drwxrwxr-x  7 allyoung allyoung  4096 Feb 24 03:33 .github/
-rw-rw-r--  1 allyoung allyoung  3279 Feb 24 03:33 .gitignore
drwxrwxr-x  2 allyoung allyoung  4096 Feb 24 03:33 images/
-rw-rw-r--  1 allyoung allyoung  2400 Feb 24 03:33 LICENSE
-rw-rw-r--  1 allyoung allyoung  1304 Feb 24 03:33 Makefile
-rw-rw-r--  1 allyoung allyoung 16631 Feb 24 03:33 README_AR.md
-rw-rw-r--  1 allyoung allyoung 13488 Feb 24 03:33 README_CN.md
-rw-rw-r--  1 allyoung allyoung 15162 Feb 24 03:33 README_ES.md
-rw-rw-r--  1 allyoung allyoung 15345 Feb 24 03:33 README_FR.md
-rw-rw-r--  1 allyoung allyoung 14846 Feb 24 03:33 README_JA.md
-rw-rw-r--  1 allyoung allyoung 13519 Feb 24 03:33 README_KL.md
-rw-rw-r--  1 allyoung allyoung 14279 Feb 24 03:33 README_KR.md
-rw-rw-r--  1 allyoung allyoung 13736 Feb 24 03:33 README.md
-rw-rw-r--  1 allyoung allyoung 14433 Feb 24 03:33 README_PT.md
-rw-rw-r--  1 allyoung allyoung 13615 Feb 24 03:33 README_SI.md
-rw-rw-r--  1 allyoung allyoung 14392 Feb 24 03:33 README_TR.md
-rw-rw-r--  1 allyoung allyoung 15423 Feb 24 03:33 README_VI.md
drwxrwxr-x  5 allyoung allyoung  4096 Feb 24 03:33 sdks/
drwxrwxr-x 20 allyoung allyoung  4096 Feb 24 03:33 web/

2.配置文件修改

进入代码库下载目录dify中的docker目录

shell 复制代码
cd ./dify/docker

.env.example改名为.env

shell 复制代码
cp .env.example .env

3.启动docker 容器

通过 $ docker compose version 命令检查版本,根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。

示例如下

bash 复制代码
$  docker compose version
Docker Compose version v2.20.3

本机Docker Compose 版本为v2,使用以下命令:

shell 复制代码
sudo docker compose up -d #Docker Compose 是 Docker 官方提供的一个工具,用于定义和运行多容器的 Docker 应用程序。借助一个 YAML 文件(通常命名为 `docker-compose.yml`),你可以对应用程序的服务、网络、卷等配置进行定义,然后使用 Docker Compose 命令一键式地启动、停止和管理整个应用程序。

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

shell 复制代码
sudo docker-compose up -d

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

shell 复制代码
[+] 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

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

shell 复制代码
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

然后即可在浏览器上输入http://<your_ip>进行登陆。效果如下

三、遇到问题与解决

1.使用sudo docker compose up -d报错

报错日志如下

shell 复制代码
$ sudo docker compose up -d
[sudo] password for allyoung: 
[+] Running 10/10
 ✘ web Error                                                                                                                                                                                                                               15.0s 
 ✘ worker Error                                                                                                                                                                                                                            15.0s 
 ✘ nginx Error                                                                                                                                                                                                                             15.0s 
 ✘ db Error                                                                                                                                                                                                                                15.0s 
 ✘ redis Error                                                                                                                                                                                                                             15.0s 
 ✘ ssrf_proxy Error                                                                                                                                                                                                                        15.0s 
 ✘ plugin_daemon Error                                                                                                                                                                                                                     15.0s 
 ✘ api Error                                                                                                                                                                                                                               15.0s 
 ✘ sandbox Error                                                                                                                                                                                                                           15.0s 
 ✘ weaviate Error                                                                                                                                                                                                                          15.0s 
Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

原因在于网络超时,无法获取到docker 镜像。

解决:增加docker镜像地址。

shell 复制代码
sudo vim /etc/docker/daemon.json

daemon.json中写入如下内容

json 复制代码
{
 	"registry-mirrors": [
       "https://pull.loridocker.com",
       "https://docker.hlmirror.com",
       "https://dockerpull.cn"
  ]
 }

注意修改镜像地址后,要重启docker 后生效。命令如下

shell 复制代码
systemctl daemon-reload
systemctl restart docker

然后重新执行sudo docker compose up -d即可。

2.使用service docker start报错

报错日志如下

shell 复制代码
# service docker start
Failed to start docker.service: Unit docker.service not found.
# docker -v
Docker version 27.2.0, build 3ab4256

原因在于docker 安装不完整。

解决:

bash 复制代码
curl -sSL https://get.docker.com/ |sh
相关推荐
[shenhonglei]14 分钟前
【吉卜力风格Prompt 超好用现成提示词】
人工智能
【云轩】18 分钟前
《信号革命:从模拟到数字的通信进化史诗》
人工智能·嵌入式硬件·语音识别
视觉&物联智能21 分钟前
【杂谈】-大型语言模型对具身人工智能发展的推动与挑战
人工智能·搜索引擎·语言模型·大模型·llm·具身人工智能
巫山老妖23 分钟前
5分钟手把手教你开发一个MCP服务
人工智能
巫山老妖27 分钟前
大模型 MCP:开启 AI 与现实世界的无缝交互革命
人工智能
WhyNot?30 分钟前
深度学习入门(三):神经网络的学习
深度学习·神经网络·学习
不吃香菜?33 分钟前
Opencv之dilib库:表情识别
人工智能·opencv·计算机视觉
郝YH是人间理想44 分钟前
OpenCV基础——傅里叶变换、角点检测
开发语言·图像处理·人工智能·python·opencv·计算机视觉
__Benco44 分钟前
OpenHarmony子系统开发 - 安全(十)
人工智能·harmonyos
odoo中国1 小时前
深度学习 Deep Learning 第16章 结构化概率模型
人工智能·深度学习·结构化模型