> 技术文档 > Dify在Ubuntu20.04系统的部署_ubuntu部署dify

Dify在Ubuntu20.04系统的部署_ubuntu部署dify


文章目录

    • 一、dify 介绍
      • 1.核心功能优势
      • 2.应用场景
    • 二、dify 安装(docker方式)
      • 1.代码库下载
      • 2.配置文件修改
      • 3.启动docker 容器
    • 三、遇到问题与解决
      • 1.使用`sudo docker compose up -d`报错
      • 2.使用`service docker start`报错

一、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.代码库下载

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

下载后目录如下所示

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.mddrwxrwxr-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 .gitattributesdrwxrwxr-x 7 allyoung allyoung 4096 Feb 24 03:33 .github/-rw-rw-r-- 1 allyoung allyoung 3279 Feb 24 03:33 .gitignoredrwxrwxr-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.mddrwxrwxr-x 5 allyoung allyoung 4096 Feb 24 03:33 sdks/drwxrwxr-x 20 allyoung allyoung 4096 Feb 24 03:33 web/

2.配置文件修改

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

cd ./dify/docker

.env.example改名为.env

cp .env.example .env

3.启动docker 容器

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

示例如下

$ docker compose versionDocker Compose version v2.20.3

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

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

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

sudo 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 PORTSdocker-api-1 langgenius/dify-api:0.6.13 \"/bin/bash /entrypoi…\" api About a minute ago Up About a minute 5001/tcpdocker-db-1  postgres:15-alpine  \"docker-entrypoint.s…\" db  About a minute ago Up About a minute (healthy) 5432/tcpdocker-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/tcpdocker-redis-1 redis:6-alpine  \"docker-entrypoint.s…\" redis About a minute ago Up About a minute (healthy) 6379/tcpdocker-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/tcpdocker-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/tcpdocker-worker-1 langgenius/dify-api:0.6.13 \"/bin/bash /entrypoi…\" worker About a minute ago Up About a minute 5001/tcp

然后即可在浏览器上输入http://进行登陆。效果如下
在这里插入图片描述

三、遇到问题与解决

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

报错日志如下

$ sudo docker compose up -d[sudo] password for allyoung: [+] Running 10/10 ✘ web Error 15.0s ✘ worker Error15.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镜像地址。

sudo vim /etc/docker/daemon.json

daemon.json中写入如下内容

{ \"registry-mirrors\": [ \"https://pull.loridocker.com\", \"https://docker.hlmirror.com\", \"https://dockerpull.cn\" ] }

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

systemctl daemon-reloadsystemctl restart docker

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

2.使用service docker start报错

报错日志如下

# service docker startFailed to start docker.service: Unit docker.service not found.# docker -vDocker version 27.2.0, build 3ab4256

原因在于docker 安装不完整。

解决:

curl -sSL https://get.docker.com/ |sh