news 2026/4/16 7:43:45

Dify本地部署指南:基于Docker快速搭建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Dify本地部署指南:基于Docker快速搭建

Dify本地部署指南:基于Docker快速搭建

在大模型技术席卷全球的今天,越来越多开发者和企业开始探索如何将 LLM(大语言模型)真正落地为可用的应用。然而,从零搭建一个支持 Prompt 工程、知识库检索、Agent 能力的系统,往往意味着复杂的后端架构、繁琐的服务编排与持续的维护成本。

有没有一种方式,能让我们跳过底层开发,直接进入“构建 AI 应用”的阶段?

答案是肯定的 ——Dify就为此而生。

它不是一个简单的前端界面,也不是仅限于调用 API 的玩具平台,而是一个集成了可视化编排、RAG 检索增强、AI Agent 设计、全链路调试与发布能力于一体的开源 AI 应用开发引擎。更关键的是,它支持一键 Docker 部署,让你几分钟内就能在本地跑起一套完整的 AI 开发环境。

这正是我们接下来要做的事:不依赖云服务、不写一行部署脚本,仅通过docker-compose,把 Dify 完整地搬进你的机器。


要运行 Dify,核心依赖是DockerDocker Compose。这两个工具几乎是现代微服务部署的事实标准,尤其适合像 Dify 这样由多个组件构成的系统 —— 前端、API 服务、数据库、缓存、向量库……全都封装在容器里,互不干扰又协同工作。

如果你还没装 Docker,别担心,过程并不复杂。

以常见的 Ubuntu 系统为例:

sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release # 添加官方 GPG 密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 添加仓库源 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装 Docker 引擎 sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io

安装完成后,验证一下版本:

sudo docker --version

看到类似Docker version 24.0.7的输出,说明基础环境已经就位。

接着是Docker Compose,它是管理多容器应用的关键。虽然有些发行版会随 Docker 自带compose插件,但为了确保兼容性,建议手动安装独立二进制文件:

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" \ -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose

检查是否生效:

docker-compose --version

到这里,你已经完成了所有前置准备。不需要配置网络策略、不用提前拉镜像、也不用预先启动数据库 —— 接下来的每一步都将由 Docker 自动完成。


现在正式进入 Dify 的部署流程。

尽管 Dify 提供了预构建镜像,官方仍推荐使用源码中的docker目录进行部署。原因很简单:便于后续自定义扩展,比如修改环境变量、挂载持久化路径、集成私有模型等。

先克隆项目:

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

进入目录后查看docker/子目录:

ls -l docker/

你会看到几个关键文件:

  • docker-compose.yml:整个系统的编排蓝图
  • middleware.env.example:环境配置模板
  • volumes/:用于数据持久化的本地目录结构示例

下一步是初始化配置文件:

cp docker/middleware.env.example .env

这个.env文件控制着数据库连接、Redis 地址、外部模型接入等核心参数。默认配置已适配本地开发场景,大多数情况下无需修改即可运行。

但如果你想接入自己的大模型服务,就需要在这里填入对应凭证。例如启用 OpenAI:

OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

或者连接阿里云通义千问:

QWEN_API_KEY=your-access-key MODEL_PROVIDER=qwen

甚至可以指向本地运行的 Ollama 实例:

OLLAMA_API_BASE_URL=http://host.docker.internal:11434

⚠️ 注意:容器内部访问宿主机服务时,不能使用localhost,需替换为host.docker.internal(Linux 上可能需要额外配置 DNS)。

保存并退出编辑器,配置就算完成了。


一切就绪,执行启动命令:

docker-compose -f docker/docker-compose.yml up -d

这条命令会读取指定路径下的编排文件,在后台启动所有服务。首次运行时,Docker 会自动拉取以下镜像:

  • difyai/web: 前端界面(React)
  • difyai/api-server: 核心后端服务(Python + FastAPI)
  • postgres:15: 用户数据、应用配置存储
  • redis:7: 缓存与异步任务队列
  • milvus:2.3(可选): 向量数据库,支撑 RAG 功能

整个过程大约持续 1~2 分钟,取决于网络速度和硬件性能。

等待期间你可以喝杯咖啡,顺便思考一下待会儿要创建什么样的 AI 应用。

时间一到,执行:

docker ps

你应该能看到类似这样的输出:

CONTAINER ID IMAGE COMMAND STATUS PORTS NAMES abc123def456 difyai/web:latest "/docker-entrypoint.…" Up 2 minutes 0.0.0.0:3000->80/tcp dify-web def456ghi789 difyai/api-server:latest "gunicorn app:app -b…" Up 2 minutes 0.0.0.0:5001->5001/tcp dify-api xyz789uvw123 postgres:15 "docker-entrypoint.s…" Up 2 minutes 5432/tcp dify-postgres ...

各服务对应的端口如下:

服务端口用途
Web UI3000浏览器访问入口
API Server5001所有接口请求处理
PostgreSQL5432持久化存储用户、应用、会话信息
Redis6379支持缓存、消息队列、任务调度

只要状态显示为Up,且没有频繁重启,基本就可以确认服务正常运行了。


打开浏览器,输入:

http://localhost:3000

如果是远程服务器部署,请将localhost替换为公网 IP 或域名:

http://<your-ip>:3000

首次访问会触发初始化流程:

  1. 创建管理员账户
    - 输入邮箱(如 admin@dify.ai)
    - 设置密码
    - 点击“创建账户”

  2. 登录系统
    - 返回登录页
    - 使用刚注册的账号登录

  3. 进入主界面
    - 成功跳转至工作台
    - 可见“创建新应用”按钮

此时,Dify 已完全就绪,你可以开始构建属于自己的 AI 应用了。


不妨动手创建第一个应用来验证部署效果。

点击「新建应用」→ 选择「文本生成」类型 → 输入名称(如“我的首个AI助手”)→ 创建

进入编辑器后,左侧是对话预览区,右侧是 Prompt 编排面板。这是 Dify 最强大的地方之一:你不再需要去代码里硬编码提示词,而是可以直接拖拽、调整、实时测试。

试着把默认提示词改成:

你是一个乐于助人的AI助手,擅长用中文回答用户问题。

然后点击右上角「保存并发布」。

回到左侧面板,输入一句:

你好,你是谁?

如果收到类似回复:

我是你的AI助手,我可以帮助你解答各种问题。

那就说明一切正常!🎉

这不是简单的 API 转发,而是经过 Dify 完整处理链路的结果:前端请求 → API Server 解析 → 构造 Prompt → 调用模型 → 返回流式响应 → 渲染到页面。每一个环节都在你的掌控之中。


当然,这只是冰山一角。

当你想把它用于生产环境时,还有几项值得考虑的优化点。

首先是反向代理与 HTTPS。直接暴露3000端口显然不适合线上使用。推荐用 Nginx 做一层转发,并配合 Let’s Encrypt 免费证书实现 HTTPS 加密。

示例配置:

server { listen 80; server_name dify.yourdomain.com; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

再配合 Certbot 自动生成 SSL 证书,轻松实现安全访问。

其次是外接大模型服务。Dify 支持主流平台开箱即用:

平台是否支持接入方式
OpenAI (GPT-3.5/GPT-4)填写 API Key
Anthropic (Claude)填写 API Key
阿里云通义千问使用 AccessKey
百度文心一言配置 API Key 与 Secret Key
本地 Ollama 模型设置 API 地址为http://host.docker.internal:11434

这意味着你可以根据需求灵活切换:测试阶段用 GPT 快速验证逻辑;上线后换成私有部署的 Qwen 或 Llama3,兼顾性能与数据安全。

最后是数据持久化与备份

Dify 默认将重要数据挂载到本地目录:

  • 数据库:./docker/volumes/postgres
  • 文件存储(MinIO):./docker/volumes/minio
  • Redis 快照:./docker/volumes/redis

这些目录一旦丢失,所有应用配置、知识库上传记录都会清零。因此建议定期打包备份,或结合 rsync、rclone 等工具做自动化同步。


部署过程中难免遇到问题,以下是常见故障及应对方法:

现象可能原因解决方案
页面无法访问(Connection Refused)服务未成功启动执行docker-compose -f docker/docker-compose.yml logs api查看日志
提示“数据库连接失败”PostgreSQL 初始化异常删除volumes/postgres目录后重新启动
登录后空白页浏览器缓存或 JWT 失效清除缓存或使用无痕模式重试
模型调用超时外部 API 不可达或网络受限检查.env中模型地址及服务器防火墙设置

排查时最有效的命令是查看日志:

docker logs dify-api # 查看后端服务日志 docker logs dify-web # 查看前端容器输出

通常错误信息会明确指出问题所在,比如密钥无效、连接超时、权限不足等。


回过头来看,Dify 的价值不仅在于“能用”,更在于“好用”。

它把原本分散在多个系统的功能——Prompt 调试、知识库管理、Agent 规划、版本发布——整合进一个统一平台,极大降低了 AI 应用的构建门槛。无论是个人开发者想快速验证想法,还是团队要做企业级智能客服,都能从中受益。

更重要的是,它是开源的、可自托管的。你不必担心数据被上传到第三方服务器,也不用受制于厂商的定价策略。所有的控制权,都在你自己手里。

这次部署只是一个起点。接下来你可以尝试:

  • 上传 PDF、Word 文档,构建基于私有知识库的问答机器人;
  • 设计具备记忆和规划能力的 AI Agent,让它自动完成多步任务;
  • 集成微信、钉钉、飞书等渠道,让 AI 助手真正走进业务流程。

而这一切,都不再需要从零造轮子。

🔗 更多使用文档详见:https://docs.dify.ai

现在,轮到你了 —— 准备好开启你的 AI 应用开发之旅了吗?

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 7:41:36

EmotiVoice文本转语音API的Python调用实践

EmotiVoice文本转语音API的Python调用实践 在为一个虚拟角色设计语音系统时&#xff0c;我遇到了一个普遍却棘手的问题&#xff1a;大多数TTS&#xff08;文本转语音&#xff09;工具听起来都像“机器人”——字正腔圆&#xff0c;但毫无情绪。用户需要的是能表达喜悦、愤怒、悲…

作者头像 李华
网站建设 2026/4/16 4:02:11

用defaultdict快速构建JSON数据原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个快速原型工具&#xff0c;使用defaultdict实现&#xff1a;1) 动态构建多级嵌套JSON结构 2) 支持从扁平数据自动生成层级结构 3) 提供便捷的节点访问接口 4) 实现数据合并功…

作者头像 李华
网站建设 2026/4/16 7:42:40

小白也能懂的MySQL字符集冲突解决方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 制作一个面向新手的MySQL字符集教学工具&#xff0c;包含&#xff1a;1. 基础概念讲解动画 2. 错误重现演示 3. 分步解决向导 4. 交互式练习环境 5. 常见问题解答。要求使用简单明了…

作者头像 李华
网站建设 2026/4/15 14:53:08

Dify平台日志系统分析与运维监控建议

Dify平台日志系统分析与运维监控建议 在AI应用快速落地的今天&#xff0c;企业不再满足于“能用”的模型服务&#xff0c;而是追求“可靠、可观测、可维护”的生产级系统。尤其是在基于大语言模型&#xff08;LLM&#xff09;构建复杂工作流的场景下——比如一个智能客服需要完…

作者头像 李华