最近帮同事从零搭了一套 Dify,说实话真正把我卡住的不是 Dify 本身的配置,而是最基础的 Docker 镜像拉取。Dify 在我实际用来做 LLM 应用开发平台已经有一段时间了,它解决的核心问题就是让你不用从零写前后端和编排逻辑,通过可视化的方式把大模型、工作流、知识库、Agent 这些能力串起来。这篇把我在 Docker 下部署 Dify 的完整过程记录下来,包括镜像源配置、Compose 启动、Ollama 本地模型接入、Windows 下的坑以及后续升级维护,给准备做 Dify 本地部署的朋友一份可以直接照着操作的参考。
1. 先理清楚:Docker、Dify、镜像站这三件事是什么关系
1.1 Dify 不是大模型,而是大模型应用的操作台
很多人第一次看到 Dify 会误以为它是一个“可以本地跑起来的 ChatGPT”,实际上它的定位完全不同。Dify 是一个开源的 LLM 应用开发平台,你可以把它理解成大模型时代的“可视化后端”。它不会自己产生模型能力,而是帮你连接各种模型来源,包括 OpenAI 兼容接口、Azure OpenAI、 Anthropic、Ollama 本地模型等,然后在这个基础上快速搭建应用。
我举一个最常见的例子:企业想做一个基于内部文档的问答机器人。传统做法是你需要先搞定文字嵌入、向量数据库、Prompt 模板、对话管理、后台管理界面,整体开发周期少说一两个星期。但在 Dify 里,你只需要在界面上导入文档、选择分段策略、配置一个 Embedding 模型,再选一个聊天模型,一个带知识库能力的问答应用就算搭好了。整个过程中你不需要写 Python 或 JavaScript 代码,它把 RAG、Agent、工作流这些底层逻辑都封装成了可视化节点。
这个概念对后面理解部署架构非常关键。因为 Dify 不是一个单一体应用,它为了保证这种开箱即用的体验,在底层同时跑着 API 服务、Worker 异步任务、前端页面、PostgreSQL 数据库、Redis 缓存、向量数据库、沙箱环境等一整套服务。如果没有 Docker 这种容器化工具,光把这些依赖装齐就是灾难,这也是为什么官方主推 Docker Compose 部署的原因。
1.2 为什么用 Docker Compose 而不是手动装环境
我在第一台测试机上曾经尝试过不依赖 Docker 的部署方式,结果在依赖环节就折腾了很久。Python 版本冲突、Node 版本不符合要求、PostgreSQL 扩展缺失,每一个问题都在消磨耐心。后来我老老实实切回 Docker 方案,整个部署过程就变得顺理成章了。
Dify 官方仓库的 docker 目录下有一个 docker-compose.yaml 文件,里面一次性声明了所有需要的服务。包括 nginx 做反向代理,api 容器运行后端接口,worker 容器处理异步任务,web 容器跑前端,还有 postgres、redis、weaviate 或 qdrant 这类基础设施。使用 Docker Compose 带来的第一个好处是环境隔离,我不会因为本机已经装了 MySQL 8.0 或者 Redis 而担心端口冲突或版本干扰;第二个好处是升级和回滚非常干净,所有服务都跟着镜像版本走,不会出现升级了代码但是依赖库没升级的尴尬情况。
当然 Docker 方案对应的学习成本也很明显,如果你从来没接触过 docker compose 命令,刚看到那一大串 YAML 文件时会有点发怵。但实际需要你手动改动的点很少,大部分情况下只要把 .env 配置文件里几项关键参数调好,剩下就是等待容器启动。后面我会把每一步细节都写出来。
1.3 “镜像站”到底卡在哪里:Docker Hub 与拉取慢的问题
Dify 相关镜像默认都发布在 Docker Hub 上,比如 langgenius/dify-api、langgenius/dify-web 这些。在国内网络环境下,直接 docker pull Docker Hub 上的镜像经常会出现几十 KB 每秒甚至超时中断的情况,这是很多新手第一道坎。
镜像加速的原理其实不复杂。Docker 客户端默认从 Docker Hub 拉取镜像,但如果配置了 registry-mirrors,Docker 会优先从你指定的镜像仓库拉取。这类镜像仓库可以理解成 Docker Hub 的只读缓存节点,它会提前同步热门镜像,你在国内访问时速度会快很多。需要注意,每个镜像加速地址的同步策略不一样,而且部分公共地址有一定时效性,过期后拉取又会变慢,所以我实际更推荐通过云厂商控制台获取专属加速地址,稳定性会好不少。
但就算配好了镜像加速,启动 Dify 时仍可能遇到部分镜像拉不下来的情况。我的经验是不要在一个加速地址上死磕,可以把阿里云、DaoCloud 等几个公开地址轮着试,哪个能拉下来用哪个。还需要提醒一点,镜像加速只作用于 Docker 客户端,如果你后续在 Dify 容器里安装 Python 依赖慢、下载 Nacos 或其他组件慢,那是另一回事,需要给容器配置对应的软件源,不能混为一谈。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 部署前的硬环境准备:版本、内存、端口
2.1 Docker 与 Compose 版本要先检查
我见过很多部署 Dify 失败的案例,最后排查下来根本不是 Dify 的问题,而是宿主机 Docker 版本太老导致镜像内某些指令无法执行。Dify 对 Docker 版本要求不算苛刻,但为了少踩坑,建议使用 Docker 20.10 以上,并确
