Dify的搭建
1. 什么是Dify
Dify 是一个开源的大语言模型(LLM)应用开发平台,融合了后端即服务(BaaS)和LLMOps (LLM运维和管理)理念,Dify 一词源自 Define + Modify,意指定义并且持续的改进你的 AI 应 用,它是为你而做的(Do it for you),旨在帮助开发者快速搭建生产级生成式AI应用,支持非 技术人员参与AI应用的定义和数据运营。
Dify核心功能如下:
应用创建:支持创建聊天助手、Agent、文本生成应用、工作流等。
技术栈支持:内置数百个模型支持、直观的Prompt编排界面、高质量的RAG引擎、Agent框 架以及灵活的流程编排。
易用性:提供界面和API,减少开发者重复工作,聚焦创新与业务需求。
企业应用:
。 私有化知识库与AI助理:安全接入企业内部知识库,提升客户服务与内部办公效率。
。 企业级LLMOps平台:通过可视化工具和流程,支持对大型语言模型的运维、监控、标 注和持续优化。
编排AI工作流:灵活集成企业系统,实时监控AI运行,确保可靠性。
Dify官网地址:Dify: Leading Agentic AI Development Platform
2. Dify搭建
用户可以在线访问“https://cloud.dify.ai/”使用dify(需要GitHub或者Google账号),也可以 在本地部署Dify社区版(开源版本),下面介绍基于DockerCompose部署Dify社区版本。
安装Dify前确保你的机器拥有至少2 core和4G以上内存,如下介绍基于Window中运行Dify。首 先需要安装DockerDesktop运行Docker,然后基于Docker运行Dify。
2.1. Docker Desktop安装与配置
1) 下载安装Docker Desktop
我们可以通过“Get Docker | Docker Docs”下载Docker Desktop使 用Docker。


下载完成后,双击“Docker Desktop Installer.exe”安装Docker Desktop,如果安装过程中出 现如下提示,说明window系统版本较低,这种情况可以升级更新Window系统,或者选在下载 先前的Docker Desktop版本试试( Release notes | Docker Docs )。
We've detected that you have an incompatible version of Windows.
Docker Desktop requires Windows 10 Pro/Enterprise/Home version 19044 or above.
To continue with the installation, upgrade Windows to a supported version and then re-run the installer.
这里选择下载Docker Desktop 4.24.1版本安装。



点击“Close and restart”重启机器,然后双击桌面上“Docker Desktop”图标进入Docker Desktop。




验证docker安装,打开cmd输入:docker --version查看docker版本。

2) 配置Docker镜像源及存储位置
在Docker Desktop中设置Docker下载image的镜像源:

在③位置处加入“registry-mirrors”指定镜像源,该处内容总体如下:
{
"registry-mirrors":[
"GitHub - DaoCloud/public-image-mirror: 很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。",
"https://docker.rainbond.cc",
"https://docker.lmirror.top" ],
"builder": { "gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false }
在Docker Desktop中设置Docker下载image后存放的位置,默认为“C:\Users\${user}
\AppData\Local\Docker\wsl”路径,后续Dify将使用大于10G的空间存储images,所以这里改 为D:\docker-local-images(提前在D盘中创建该目录):

设置完成后可以通过cmd命令“docker info”查看镜像地址是否生效:

2.2. Dify部署与访问
1) 基于Docker部署Dify
在"GitHub - langgenius/dify: Production-ready platform for agentic workflow development."中下载Dify,这里选择dify-1.1.3版本,下载完成后, 将压缩包解压到D盘“D:\dify-1.1.3”中。进入到“D:\dify-1.1.3\docker”目录,将“.env.
example”文件改名为“.env”,然后在该目录下打开cmd,通过如下命令启动Dify:
docker compose up -d

等待一段时间后,当所有images下载完成后,Dify启动成功。

也可以通过“docker ps”查看启动的镜像(docker logs + container id 查看对应镜像的日 志):

如果要停止Dify,可以通过cmd输入:“docker compose down ”
备注:通过如下命令将window中docker的所有image打包到“all_images.tar”中:
docker save -o all_images.tar langgenius/dify-api:1.1.3 langgenius/dify-web:1.1.3 langgenius/dify-sandbo 在目标计算机上,打开cmd,使用如下命令将all_images.tar导入到目标计算机中:
docker load -i all_images.tar
2) 访问Dify
docker运行Dify后,可以在浏览器上访问 http://localhost/install 进入 Dify 控制台并开始初始 化安装操作。



dify 1.2.0 bug解决地址:Issue #17788 · langgenius/dify
3. MySQL8基于Window安装
MySQL搭建首先需要有对应的安装包,不同操作系统的MySQL安装包可以从MySQL官网下载, 地址:https://downloads.mysql.com/archives/community/。此外MySQL目前最新版本为 MySQL8版本,这里我们下载Windows 的MySQL8.0.30版本进行安装及操作。你可以从官网下 载对应的MySQL版本进行安装,也可以直接在资料中找到下载好的“mysql-8.0.30-winx64.
zip”文件进行安装,安装步骤如下:
1) 解压下载好的MySQL安装包mysql-8.0.30-winx64.zip

2) 准备my.ini文件
进入MySQL解压目录中,创建my.ini文件,该文件一定是ini文件结尾,而非txt文件。

向该文件中写入如下内容:
[mysqld]
# 设置3306端口 port=3306
# 设置mysql的安装目录 ---这里输入你安装的文件路径---- basedir=D:\mysql-8.0.30-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql-8.0.30-winx64\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8 character-set-server=utf8
# 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集 default-character-set=utf8 [client]
# 设置mysql客户端连接服务端时默认使用的端口 port=3306
default-character-set=utf8
注意:以上my.ini文件内容要根据自己实际解压MySQL目录来进行修改“basedir”和 “datadir”两项。

3) 初始化数据库
进入到解压之后的bin目录中,按住键盘“Shift”并空白处鼠标右键,选择“在此处打开命令窗 口”。

输入以下命令进行初始化数据库,执行完成之后可以看到产生了临时密码,将临时密码记下来 (可以选中后右键进行复制)。
mysqld --initialize --console

注意为了防止密码忘记该窗口可以暂时不关闭。
4) 将Mysql安装为Windows服务
在window图标上右键选择“命令提示符(管理员)”,打开管理员权限的cmd窗口,手动进入 到解压的MySQL目录

执行如下命令将Mysql安装为Windows服务。 mysqld -install

5) 启动mysql
执行如下命令启动mysql。 net start mysql

6) 登录数据库并修改登录密码
输入如下命令登录mysql,-u 指定为root用户,-p后紧跟之前记录的临时密码。 mysql -u root -p

MySQL临时密码比较麻烦,我们可以在登录MySQL后修改密码方便后续登录MySQL数据库,修 改密码命令如下:
alter user 'root'@'localhost' identified by '123456';
以上是修改root用户登录MySQL密码为123456。

7) 退出MySQL
执行如下命令退出MySQL。
quit

8) 再次登录MySQL验证密码是否生效
重新登录mysql,使用root用户,并指定密码为修改后的123456,可以看到能正常登录mysql。

9) 允许任意节点连接MySQL
登录mysql,操作如下命令:
[root@node2 java]# mysql -u root -p123456 mysql> use mysql;mysql> select user,authentication_string from user; mysql> delete from user where user = 'root';mysql> CREATE USER 'root'@'%' IDENTIFIED BY '123456';mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;mysql> FLUSH PRIVILEGES;
最后重启MySQL即可:
#进入mysql解压目录的bin目录下,停止mysql后再启动mysql net stop mysql
net start mysql
4. Dify连接MySQL配置
后续我们将会在Dify中创建工作流,使用“代码执行节点”执行python代码操作MySQL中数 据。 Dify通过python代码连接MySQL需要做如下配置。
1. 安装pymysql依赖库
需要在“D:\dify-1.1.3\docker\volumes\sandbox\dependencies”目录中的“python- requirements.txt”文件中加入pymysql依赖,这样Dify启动后运行的docker容器可以找到 python mysql依赖:
pymysql==1.1.1
2. 设置允许Dify访问3306端口
在“D:\dify-1.1.3\docker\ssrf_proxy”目录中的“squid.conf.template”文件中增加如下内 容,让Dify认为3306端口为安全访问端口。
... ...
acl Safe_ports port 3306 # MYSQL
... ...

3. 配置Dify可以访问外部网络
Dify后续运行在sandbox容器中,默认在该容器中不允许连接外部ip,通过配置“D:\dify-1.1.3 \docker”目录中“docker-compose.yaml”文件中的sandbox部分,允许sandbox容器连接外 部网络。
docker-compose.yaml文件中修改处如下,只需要在“networks”部分加入 “ - default”即可 (特别提示:换行后可能存在Tab符号,可以删除该行后的空白行)。
4. 重启Dify
以上配置完成后需要重新启动Dify:
#在“D:\dify-1.1.3\docker”目录中执行如下命令停止Dify docker compose down
#在“D:\dify-1.1.3\docker”目录中执行如下命令启动Dify docker compose up -d