適用於誰
- 搜「dify 本地部署」「dify docker 部署教學」「dify docker 部署升級」「dify windows docker 部署」的人;
- 出於數據不出內網、想接本地模型等原因,要把 Dify 裝在自己電腦或伺服器上的人。
本文根據 Dify 官方自部署文檔整理,資料核對於 2026-10-11。只是想試試 Dify 的話,直接用雲端版更快,見《Dify怎麼用》。
結論先說
- 官方推薦用 Docker Compose 部署,核心就三步:克隆代碼、複製
.env、docker compose up -d。 - 最低配置:CPU 2 核、內存 4 GiB;Docker Compose 需要 2.24.0 或更高。
- 啟動後先訪問
/install創建管理員,再從首頁登入。 - 改配置改的是
docker/.env,改完要重啟容器。 - 升級沒有一條通用命令,官方要求按目標版本的發佈說明操作。
部署前準備
硬件
官方給出的最低要求:CPU ≥ 2 核,內存 ≥ 4 GiB。這只是讓 Dify 自己跑起來的要求,不包含本地模型。
軟件
| 操作系統 | 所需軟件 | 官方備註 |
|---|---|---|
| macOS 10.14 或更高 | Docker Desktop(含 Docker Compose 2.24.0+) | Docker 虛擬機至少分配 2 個虛擬 CPU 和 8 GiB 內存 |
| Linux | Docker 19.03+、Docker Compose 2.24.0+ | — |
| Windows(啟用 WSL 2) | Docker Desktop(含 Docker Compose 2.24.0+) | 原始碼和掛載給容器的數據建議放在 Linux 文件系統裏,而不是 Windows 盤 |
先確認版本:
bash
docker compose version
步驟
1. 克隆代碼
官方命令會自動取最新的發佈版本:
bash
git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git
這條命令依賴 git、curl、jq 三個工具,缺哪個裝哪個。
2. 準備配置並啟動
bash
cd dify/docker
cp .env.example .env
docker compose up -d
官方文檔列出會啟動的容器:
- 7 個核心服務:
api、api_websocket、worker、worker_beat、web、plugin_daemon、agent_backend; - 8 個依賴組件:
weaviate、db_postgres、redis、nginx、ssrf_proxy、agent_ssrf_proxy、sandbox、local_sandbox; - 1 個一次性任務
init_permissions,用來設定存儲文件的權限,跑完自動退出。
第一次啟動要拉取所有鏡像,耗時取決於網絡。
3. 檢查容器狀態
bash
docker compose ps
每個容器的狀態應該是 Up 或 healthy。init_permissions 顯示 Exited 是正常的,不用管。
4. 初始化管理員並登入
- 瀏覽器打開初始化頁面,設定管理員帳號:
- 本機:
http://localhost/install - 伺服器:
http://伺服器IP/install
- 設定完成後從首頁登入:
http://localhost或http://伺服器IP。
登入之後的使用方式和雲端版一樣:先到模型供應商裏接入模型,再創建應用。
修改配置
官方文檔對配置文件的說明:
- 必要的啟動配置在
docker/.env裏(就是你從.env.example複製出來的那個文件),直接編輯; - 可選的、特定組件的配置在
docker/envs/下有模板。要覆蓋預設值,把對應模板複製一份並去掉.example後綴再編輯,例如:
bash
cd dify/docker
cp envs/vectorstores/milvus.env.example envs/vectorstores/milvus.env
docker/.env裏的值優先級高於docker/envs/*.env。
改完之後重啟才生效:
bash
docker compose down
docker compose up -d
80 端口被佔用是最常見的啟動失敗原因(Dify 自帶的 nginx 預設對外用 80 端口)。官方「環境變量」文檔裏對應的變量是 EXPOSE_NGINX_PORT(預設 80,含義是映射到 Nginx HTTP 的宿主機端口)。在 docker/.env 裏把它改成別的端口再重啟;改了之後訪問地址也要帶上端口號,例如 http://localhost:8080/install。
升級
官方的說法是:不同版本的升級步驟可能不同,要看 GitHub Releases 頁面裏目標版本的升級指南。另外兩條提醒:
- 升級後對照新的
.env.example檢查自己的.env,看有沒有新增或變更的變量; - 如果你改過
docker-compose.yaml,要把改動重新應用到新版本的文件上,不要沿用舊文件,因為新版本可能增加了運行必需的服務。
升級前務必備份。官方 FAQ 給的做法是把整個 dify 目錄複製一份並帶上時間戳:
bash
cp -r dify "dify.bak.$(date +%Y%m%d%H%M%S)"
常見問題
Q:克隆時報 fatal: Remote branch null not found in upstream origin?
官方 FAQ 的解釋:克隆命令通過 GitHub API 獲取最新版本號,這個請求失敗時(文檔裏寫的常見原因是 GitHub 對匿名請求的頻率限制)就會得到 null。到 Dify 的 Releases 頁面查到最新版本號,改用顯式版本號克隆:
bash
git clone --branch 版本號 https://github.com/langgenius/dify.git
官方還說明,不加 --branch 直接克隆也可以運行,main 分支的 Compose 文件指向的仍是最新發布版鏡像。
Q:伺服器上不方便用 git 怎麼辦?
官方 FAQ 提供了 ZIP 方式:用 wget 下載最新發布版的壓縮包再解壓;或者在另一台裝置上下載 ZIP 後手動傳過去。
Q:想裝指定的舊版本?
git clone https://github.com/langgenius/dify.git --branch 版本號,其餘步驟相同。
Q:怎麼接本機的 Ollama?
Dify 跑在容器裏,容器裏的 localhost 不是宿主機。在 Dify 的模型供應商裏添加 Ollama 時,地址要填宿主機可達的地址(Docker Desktop 上一般是 http://host.docker.internal:11434),同時把 Ollama 的 OLLAMA_HOST 設為 0.0.0.0。設定方法見《Ollama 修改模型存儲位置與局域網訪問》。
Q:Windows 上很慢?
對照官方的備註檢查:是否啟用了 WSL 2;代碼目錄是否放在了 Windows 盤上。官方建議把原始碼和掛載數據放在 Linux 文件系統裏。
Q:容器起不來怎麼看原因?
docker compose ps 找到狀態不對的容器,再用 docker compose logs 容器名 看日誌。官方文檔另有「Docker 問題」和「常見問題」兩篇排查文章。
參考資料
- Dify 文檔:使用 Docker Compose 部署 Dify — https://docs.dify.ai/zh/self-host/deploy/quick-start/docker-compose
- 自部署常見問題 — https://docs.dify.ai/zh/self-host/deploy/quick-start/faqs
- 環境變量 — https://docs.dify.ai/zh/self-host/deploy/configuration/environments
- Dify Releases — https://github.com/langgenius/dify/releases
0 條評論
還沒有評論,來搶沙發~