dify docker部署全過程
簡紹
Dify 是一款開源的大語言模型(LLM) 應(yīng)用開發(fā)平臺。它融合了后端即服務(wù)(Backend as Service)和 LLMOps 的理念,使開發(fā)者可以快速搭建生產(chǎn)級的生成式 AI 應(yīng)用。即使你是非技術(shù)人員,也能參與到 AI 應(yīng)用的定義和數(shù)據(jù)運(yùn)營過程中。
由于 Dify 內(nèi)置了構(gòu)建 LLM 應(yīng)用所需的關(guān)鍵技術(shù)棧,包括對數(shù)百個(gè)模型的支持、直觀的 Prompt 編排界面、高質(zhì)量的 RAG 引擎、穩(wěn)健的 Agent 框架、靈活的流程編排,并同時(shí)提供了一套易用的界面和 API。這為開發(fā)者節(jié)省了許多重復(fù)造輪子的時(shí)間,使其可以專注在創(chuàng)新和業(yè)務(wù)需求上。
docker dify 部署
官網(wǎng)地址:
https://docs.dify.ai/zh-hans/guides/knowledge-base
去官方倉庫 將代碼 拉下來
git clone https://github.com/langgenius/dify.git
進(jìn)入 Dify 源代碼的 Docker 目錄
cd dify/docker
復(fù)制配置環(huán)境
cp .env.example .env
啟動(dòng) docker compose 安裝容器
docker compose up -d
等容器安裝完后 可以看到 80 端口被占用
網(wǎng)址: http://127.0.0.1

安裝問題
如 80 端口打不開,麻煩修改 env 文件, 找到如下調(diào)整端口
# ------------------------------ # Docker Compose Service Expose Host Port Configurations # ------------------------------ EXPOSE_NGINX_PORT=8190 EXPOSE_NGINX_SSL_PORT=1443
打開網(wǎng)址報(bào) 502 或者 無法登錄, 大概率是 nginx 轉(zhuǎn)發(fā)失敗
通過 查找 docker-web-1 和 docker-api-1 服務(wù) 的信息, 尋找對應(yīng)的 IPAddress 的地址
C:\Users\sys>docker inspect docker-api-1 "Gateway": "172.19.0.1", "IPAddress": "172.19.0.6", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0,
C:\Users\sys>docker inspect docker-web-1 "Gateway": "172.19.0.1", "IPAddress": "172.19.0.5", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "DNSNames": [ "docker-web-1", "web", "a9044b828f6e" ]
修改 dify/docker/nginx/conf.d 文件夾下
- 3000 端口是 docker-web-1 的 ip address 填入
- 5001 端口是 docker-api-1 的 ip address 填入
后面直接重啟對應(yīng)的 nginx 容器

# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration.
server {
listen ${NGINX_PORT};
server_name ${NGINX_SERVER_NAME};
location /console/api {
proxy_pass http://172.19.0.6:5001;
include proxy.conf;
}
location /api {
proxy_pass http://172.19.0.6:5001;
include proxy.conf;
}
location /v1 {
proxy_pass http://172.19.0.6:5001;
include proxy.conf;
}
location /files {
proxy_pass http://172.19.0.6:5001;
include proxy.conf;
}
location /explore {
proxy_pass http://172.19.0.5:3000;
include proxy.conf;
}
location /e {
proxy_pass http://plugin_daemon:5002;
proxy_set_header Dify-Hook-Url ://;
include proxy.conf;
}
location / {
proxy_pass http://172.19.0.5:3000;
include proxy.conf;
}
# placeholder for acme challenge location
${ACME_CHALLENGE_LOCATION}
# placeholder for https config defined in https.conf.template
${HTTPS_CONFIG}
}
500 報(bào)錯(cuò)
等待后臺 api 啟動(dòng), 以及可能版本升級出現(xiàn)數(shù)據(jù)庫升級問題,可以考慮參考官方升級文檔或者清除數(shù)據(jù)庫文件記錄
添加模型
在設(shè)備里有個(gè) 模型提供商, 可以在這邊通過 ollama、xinference 等等 手段添加模型


使用方式
知識庫添加自己的文檔信息,然后通過Rerank 模型 和 Embedding 模型 導(dǎo)入知識庫就可以了

模型供應(yīng)商列表
Dify 為以下模型提供商提供原生支持:



其中 (???) 代表支持 Function Calling,(??) 代表視覺能力。
工作流
基本介紹工作流通過將復(fù)雜的任務(wù)分解成較小的步驟(節(jié)點(diǎn))降低系統(tǒng)復(fù)雜度,減少了對提示詞技術(shù)和模型推理能力的依賴,提高了 LLM 應(yīng)用面向復(fù)雜任務(wù)的性能,提升了系統(tǒng)的可解釋性、穩(wěn)定性和容錯(cuò)性。
Dify 工作流分為兩種類型:
- Chatflow:面向?qū)υ掝惽榫?,包括客戶服?wù)、語義搜索、以及其他需要在構(gòu)建響應(yīng)時(shí)進(jìn)行多步邏輯的對話式應(yīng)用程序。
- Workflow:面向自動(dòng)化和批處理情景,適合高質(zhì)量翻譯、數(shù)據(jù)分析、內(nèi)容生成、電子郵件自動(dòng)化等應(yīng)用程序。為解決自然語言輸入中用戶意圖識別的復(fù)雜性,Chatflow 提供了問題理解類節(jié)點(diǎn)。相對于 Workflow 增加了 Chatbot 特性的支持,如:對話歷史(Memory)、標(biāo)注回復(fù)、Answer 節(jié)點(diǎn)等。
為解決自動(dòng)化和批處理情景中復(fù)雜業(yè)務(wù)邏輯,工作流提供了豐富的邏輯節(jié)點(diǎn),如代碼節(jié)點(diǎn)、IF/ELSE 節(jié)點(diǎn)、模板轉(zhuǎn)換、迭代節(jié)點(diǎn)等,除此之外也將提供定時(shí)和事件觸發(fā)的能力,方便構(gòu)建自動(dòng)化流程。
常見案例
客戶服務(wù)
- 通過將 LLM 集成到你的客戶服務(wù)系統(tǒng)中,你可以自動(dòng)化回答常見問題,減輕支持團(tuán)隊(duì)的工作負(fù)擔(dān)。
- LLM 可以理解客戶查詢的上下文和意圖,并實(shí)時(shí)生成有幫助且準(zhǔn)確的回答。
內(nèi)容生成
- 無論你需要?jiǎng)?chuàng)建博客文章、產(chǎn)品描述還是營銷材料,LLM 都可以通過生成高質(zhì)量內(nèi)容來幫助你。
- 只需提供一個(gè)大綱或主題,LLM將利用其廣泛的知識庫來制作引人入勝、信息豐富且結(jié)構(gòu)良好的內(nèi)容。
任務(wù)自動(dòng)化
- 可以與各種任務(wù)管理系統(tǒng)集成,如 Trello、Slack、Lark、以自動(dòng)化項(xiàng)目和任務(wù)管理。
- 通過使用自然語言處理,LLM 可以理解和解釋用戶輸入,創(chuàng)建任務(wù),更新狀態(tài)和分配優(yōu)先級,無需手動(dòng)干預(yù)。
數(shù)據(jù)分析和報(bào)告
- 可以用于分析大型知識庫并生成報(bào)告或摘要。
- 通過提供相關(guān)信息給 LLM,它可以識別趨勢、模式和洞察力,將原始數(shù)據(jù)轉(zhuǎn)化為可操作的智能。
- 對于希望做出數(shù)據(jù)驅(qū)動(dòng)決策的企業(yè)來說,這尤其有價(jià)值。
郵件自動(dòng)化處理
- LLM 可以用于起草電子郵件、社交媒體更新和其他形式的溝通。
- 通過提供簡要的大綱或關(guān)鍵要點(diǎn),LLM 可以生成一個(gè)結(jié)構(gòu)良好、連貫且與上下文相關(guān)的信息。
- 這樣可以節(jié)省大量時(shí)間,并確保你的回復(fù)清晰和專業(yè)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker如何多步構(gòu)建生成dubbo-admin鏡像詳解
dubbo-admin是dubbo框架的管理平臺,下面這篇文章主要給大家介紹了關(guān)于Docker如何多步構(gòu)建生成dubbo-admin鏡像的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2018-04-04
docker?Desktop安裝WSL?--update報(bào)錯(cuò)問題成功解決辦法
這篇文章主要介紹了如何在Windows?11上設(shè)置WSL2為默認(rèn)版本,解決WSL2安裝和卸載過程中遇到的問題,包括強(qiáng)制中斷命令、wsl--uninstall命令無效以及手動(dòng)刪除Linux發(fā)行版的方法,需要的朋友可以參考下2025-02-02
Docker同時(shí)安裝MySQL和MariaDB的方法步驟
這篇文章主要介紹了Docker同時(shí)安裝MySQL和MariaDB的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
在Ubuntu?Server?22.04上安裝?Docker的詳細(xì)步驟記錄
通過使用容器技術(shù),Docker能夠讓開發(fā)人員將應(yīng)用及其依賴環(huán)境一同打包,從而實(shí)現(xiàn)快速部署、一致的開發(fā)環(huán)境和優(yōu)秀的可移植性,這篇文章主要給大家給大家介紹了關(guān)于在Ubuntu?Server?22.04上安裝?Docker詳細(xì)步驟的相關(guān)資料,需要的朋友可以參考下2024-08-08
解決docker?pull出現(xiàn)錯(cuò)誤:Error?response?from?daemon
這篇文章主要給大家介紹了關(guān)于解決docker?pull出現(xiàn)錯(cuò)誤:Error?response?from?daemon的相關(guān)資料,這個(gè)錯(cuò)誤提示一般是因?yàn)槟銢]有權(quán)限拉取對應(yīng)的鏡像,文中將解決辦法介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
Docker容器中的OpenCV如何輕松構(gòu)建可移植的計(jì)算機(jī)視覺環(huán)境

