手把手教你用Docker部署Dify平台,打造可视化LLM应用环境

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

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

一、关于Dify

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

重要的是,Dify是开源的,它由一个专业的全职团队和社区共同打造。你可以基于任何模型自部署类似AssistantsAPI和GPTs的能力,在灵活和安全的基础上,同时保持对数据的完全控制。

二、前提条件

Dify可以在运行Docker环境的Windows、MacOS、Linux等电脑中部署,安装Dify之前, 请确保你的机器已满足最低安装要求:

CPU >= 2 Core
RAM >= 4 GiB
  • 1
  • 2

此外,操作系统还需要安装好Docker环境,不同OS所需的软件如下:‍‍‍‍

在这里插入图片描述

三、部署过程

1、克隆Dify代码仓库
‍‍‍‍

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

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

2、启动Dify

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

cd dify/docker
  • 1

2. 复制环境配置文件

cp .env.example .env
  • 1

3. 启动Dify的Docker容器

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

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

docker compose up -d
  • 1

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

docker-compose up -d
  • 1

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

[+] 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           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

docker compose ps
  • 1

在这个输出中,你应该可以看到包括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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

四、更新Dify

当Dify版本更新后,你可以克隆或拉取最新的Dify源代码,并通过命令行更新已经部署的Dify环境。‍‍‍‍‍‍‍‍‍‍‍‍

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

cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d
  • 1
  • 2
  • 3
  • 4
  • 5

执行上述命令更新完成后,需按以下操作同步环境变量配置 (重要!)。‍‍‍‍

如果.env.example文件有更新,请务必同步修改您本地的.env文件。
检查.env文件中的所有配置项,确保它们与您的实际运行环境相匹配。
您可能需要将.env.example中的新变量添加到.env文件中,
并更新已更改的任何值。
  • 1
  • 2
  • 3
  • 4

五、使用Dify

按照以上步骤部署好Dify后,首先前往管理员初始化页面设置设置管理员账户:

# 本地环境
http://localhost/install

# 服务器环境
http://your_server_ip/install
  • 1
  • 2
  • 3
  • 4
  • 5

可以打开以下地址访问Dify主页面:

# 本地环境
http://localhost

# 服务器环境
http://your_server_ip
  • 1
  • 2
  • 3
  • 4
  • 5

六、写在最后

通过私有化本地部署Dify,结合Ollama等大模型运行环境,可以打造自己的私有大模型工具链,实现大模型的本地可视化运行。在涉密或敏感数据场合具有极大的应用价值。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

赶快用起来吧!!!‍‍‍

七、最后分享

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。