- 环境:




1.源码拉取

切换到~目录下进行git clone,如下:
git clone https://github.com/langgenius/dify.git
2.切换到docker目录
cd ~/dify/docker && ls -a -l
-
-a 可以将隐藏文件显示出来


-
将.env.example复制一份到.env,后续可自定义配置各个中间件的port等
cp .env.example .env
-
查看.env文件内容10~40行之间的内容:
sed -n '10,40p' .env

3.升级docker-compose至v2
-
如果你的docker-compose是v1,建议升级到v2版本,不然无法正常启动dify,如下:
docker-compose -v
-
由于在部署dify前我升级了我的docker desktop(注意不要太高,太高的话自己的mac系统不一定能匹配上,地址:MacOS Docker Desktop历史版本列表),


4.使用docker-compose启动dify
-
使用docker-compose 命令启动并运行容器,在~/dify/docker目录下执行如下命令:
docker-compose up -d

- 这里有个小tip:如果这里的镜像拉不下来一直提示 xxxx 连接超时的话(只要是国内,不管你是win、linux还是mac必中),有两种方式可以尝试,第一种就是上网搜一下docker的国内源,设置下看行不行(这个我已经试过了,效果很糟糕),第二种就是走proxy,比如本地或局域网的7890端口等(小黑cat,都知道的),操作见下图(由于我就是本地pull的,不用设置proxy,如果是独立的linux或者ubantu服务器的话,需要共享本地proxy的话,需要设置):

- 拉取镜像

- 启动镜像->容器运行

- 基本上用docker部署dify就是傻瓜式操作,除了硬条件docker版本和网络环境以外,其余不需要操心什么,另外,之所以本地部署,一方面是很多资产数据都是私有化的,本地更安全,另一方面就是扩展自己的插件更方便。
5.查看容器启动情况
docker ps -a

-
熟悉的nginx、redis、postgres等,用的都是默认的端口,比如nginx的http端口80,https端口443,redis的6379和pg的5432等。
-
如果你的docker在没跑dify之前已经运行了一个nginx:80的容器了该怎么办?或者宿主机上已经映射(暴露)了一个80的端口了又该怎么办? 因为这些会导致dify的最后一个容器docker-nginx-1启动失败,会提示诸如:"80 already used..."
-
在章节2中我们复制了.env文件,其中我们可以修改nginx容器的端口,如下:
------------------------------
Environment Variables for Nginx reverse proxy
------------------------------
NGINX_SERVER_NAME=_
NGINX_HTTPS_ENABLED=falseHTTP port
NGINX_PORT=80
SSL settings are only applied when HTTPS_ENABLED is true
NGINX_SSL_PORT=443
if HTTPS_ENABLED is true, you're required to add your own SSL certificates/keys to the
./nginx/ssldirectoryand modify the env vars below accordingly.
NGINX_SSL_CERT_FILENAME=dify.crt
NGINX_SSL_CERT_KEY_FILENAME=dify.key
NGINX_SSL_PROTOCOLS=TLSv1.2 TLSv1.3Nginx performance tuning
NGINX_WORKER_PROCESSES=auto
NGINX_CLIENT_MAX_BODY_SIZE=100M
NGINX_KEEPALIVE_TIMEOUT=65
........... .............. ............... .................. ................

-
另外在.env同级目录下有一个docker-compose.yaml文件,我们可以修改nginx容器暴露在宿主机上的端口号,如下:
EXPOSE_NGINX_PORT: {EXPOSE_NGINX_PORT:-80} EXPOSE_NGINX_SSL_PORT: {EXPOSE_NGINX_SSL_PORT:-443}
........... .............. ............... .................. ................
ports:
- "{EXPOSE_NGINX_PORT:-80}:{NGINX_PORT:-80}"
- "{EXPOSE_NGINX_SSL_PORT:-443}:{NGINX_SSL_PORT:-443}"

- 有其他需求的,按照上述配置文件修订即可。
6.浏览器访问dify
- 由于是80端口,直接浏览器输入:http://localhost即可.
- 设置下管理员账户即可

- 设置完成后,会跳转到工作室页面(团队·成员·资源共享),如果没用过coze和dify,一进来这个页面会有点懵。


-
工作流 (Workflow): 专注于后端业务流程的自动化,适用于多步骤任务的编排和执行。它通过可视化画布定义流程逻辑,支持并行处理、延迟和循环等功能。工作流通常由系统触发或手动执行,强调流程的稳定性和可重复性。
-
Chatflow: 是构建聊天助手和 Agent 的核心工具,提供可视化的编排界面。开发者可以通过拖拽节点设计 AI 的行为逻辑,例如调用大语言模型、检索知识库或执行条件判断。Chatflow 是实现复杂对话逻辑的关键工具。
-
聊天助手 (Chat Assistant) :专注于与用户进行多轮对话,能够记住上下文并提供流畅的交互体验。它适用于智能客服、虚拟助手等场景,支持知识库挂载以回答特定领域的问题。通过 Chatflow 可视化界面,开发者可以定义对话逻辑、开场白和变量,优化用户体验。
-
Agent (智能体) 是 Dify 中最强大的应用形态,具备自主规划和工具调用能力。它不仅能回答问题,还能通过调用 API、执行代码等完成复杂任务。Agent 适用于自动化业务流程、数据分析和任务处理等场景,支持配置工具如搜索引擎、数据库访问等,增强 AI 的执行能力。
-
文本生成 (Text Generation):专注于一次性生成高质量的内容,例如广告文案、邮件撰写或摘要提取。用户通过填写变量触发 AI 输出结果,核心在于设计高质量的提示词 (Prompt)。它适合需要快速生成结构化或非结构化文本的场景。
7.dify配置
7.1 LLM供应商

-
大语言模型是基石,而大语言模型非一家独大,有条件的都会自己搞,所以选择一个靠谱的LLM供应商是非常重要的。dify的插件市场简直🐂,太棒了,这里有条件的你可以用OpenAI,国内的用千问、百炼、火山或者深度求索,当然本地部署个人的话就用Ollma、追求高性能的就用Vllm等。

-
这里以深度求索DeepSeek为例子,来安装下插件(插件的概念不是把模型下载到本地进行跑,而是安装对应llm的python库及工具,后续运行的话,还需要配置apikey)



-
这里不得不要感慨下了,同样是做过前端的,人家dify产品(国人做的,起于2023年)做的是真好,什么产品概念,用户交互、扩展性等简直绝了。
-
再回到模型供应商这里,设置下深度求索的apikey(DeepSeek开放平台),如下:

7.2 自定义MCP服务接入
- 这个功能是非常哇塞的,话不多说,本地启动MCP服务

- 注意地址要配置对,有时候需要多加个/不要丢了

