Mac下使用Docker快速布署FastGPT實現AI私有知識庫
FastGPT 是一個基于 LLM 大語言模型的知識庫問答系統,提供開箱即用的數據處理、模型調用等能力。同時可以通過 Flow 可視化進行工作流編排,從而實現復雜的問答場景!
官網地址為:https://github.com/labring/FastGPT
應用場景
具體的玩法是什么:添加或者采集文章,添加到自己的知識庫,FastGPT會向量化保存。整合上ChatGPT。
當你提問的內容匹配到自己采集的文章時,會讓AI整合知識庫的內容進行回復。
比如:下載100篇指定品類的小紅書爆文。配合ChatGPT。
可以讓AI更高質量的產出此品類下的文章 。搭建自己定制化的AI智能知識助手。
本文參考官方教程,進行布署,在Mac下的布署會有一點問題,官方倉庫也沒有issue提到,故記錄。

一、安裝 Docker 和 docker-compose
Docker是一種容器技術,可以快速布署環境到機器上,并且和主機隔離,應該相當廣泛。
其中最核心的概念有2個,一個是鏡像images,一個是容器container。
鏡像就像是一個模板,容器就是利用這個模板建立的環境。
docker-compose則是docker專用的編排工具,就是設計好模板,讓docker按模板來下載、啟動并運行相關的鏡像。
下面是FastGPT官方的流程。
# 安裝 Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable --now docker
# 安裝 docker-compose
curl -L https://github.com/docker/compose/releases/download/2.20.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 驗證安裝
docker -v
docker-compose -v
實際應用中,Mac安裝會比較簡單,可以參考:https://docs.docker.com/docker-for-mac/install/#download-docker-for-mac
docker-compose安裝可以參考:https://docs.docker.com/compose/install/standalone/
下載dmg安裝包,直接就可以安裝上。
Linux會復雜一些。安裝好之后,可以很快速的搭建本機或者線上的環境,比如我本機Mac上,可以快速搭建一個隨用隨開的MySQL數據庫。
只要一行就可以了。先去Docker官方的中央倉庫選好鏡像。https://hub.docker.com/ ,注意不同的tag代表不同的版本說明。
我選擇mysql8.3進行安裝,復制頁面上的參數命令。https://hub.docker.com/_/mysql/tags
# 1、拉取鏡像image
docker pull mysql:8.3.0
# 創建本地目錄:
mkdir -p {data,conf,backup,logs,mysql-files}
# 配置端口和映射本地目錄
docker run --name mymysql5.8 \
--restart always \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=xxxx \
-v /data/env/mysql/data:/var/lib/mysql \
-v /data/env/mysql/conf:/etc/mysql/conf.d \
-v /data/env/mysql/backup:/backup \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
-d mysql:8.3.0
如果想建立第二個庫,改個新端口,并把-name改個名字,即可運行。
還有很多用法,可以百度一下,很多相關的資料。
二、下載FastGPT
依次執行下面命令,創建 FastGPT 文件并拉取docker-compose.yml和config.json,執行完后目錄下會有 2 個文件。
cd ~/MyCodeEnv
mkdir fastgpt
cd fastgpt
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/files/deploy/fastgpt/docker-compose.yml
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json
三、配置修改
修改docker-compose.yml中的
1、OPENAI_BASE_URL 改為你的GPT的鏈接。默認為https://api.openai.com/v1,如果你有魔法環境,不需要改,如果在國內本地,改為中轉代理地址。
2、CHAT_API_KEY,對應的ChatGPT的key值。
至于中轉代理,可以用Nginx進行中轉或者Clash,也可以購買別人建立好的。當然也可以用OneAPI,同樣使用Docker搭建。不過需要搭建到HK這些節點,國內是訪問不到GPT的API的。
如果直接使用 OneAPI 的話,OPENAI_BASE_URL=OneAPI訪問地址/v1;CHAT_API_KEY=令牌
我在本地搭建了OneAPI,所以填配置為:
OPENAI_BASE_URL=http://localhost:13000/v1
CHAT_API_KEY=sk-xxxxxxxx # OneAPI后臺的Key不是ChatGPT的。特別注意。非OneAPI后臺則是填ChatGPT的key值。
如果有需要還可以修改別的信息
最后啟動
# 在 docker-compose.yml 同級目錄下執行
docker-compose pull
docker-compose up -d
Mac上有Docker管理工具,安裝好docker之后自帶的。

看到都在Running中代表正常。
如果是Linux系統可以使用docker ps 檢查運行狀態。
四、初始化 Mongo 副本集(4.6.8以前可忽略)
FastGPT 4.6.8 后使用了 MongoDB 的事務,需要運行在副本集上。副本集沒法自動化初始化,需手動操作。
# 查看 mongo 容器是否正常運行
docker ps
# 進入容器
docker exec -it mongo bash
# 連接數據庫(這里要填Mongo的用戶名和密碼)
mongo -u myusername -p mypassword --authenticationDatabase admin
mongo -u root -p QyhsTech2023 --authenticationDatabase admin
# 初始化副本集。如果需要外網訪問,mongo:27017 可以改成 ip:27017。但是需要同時修改 FastGPT 連接的參數(MONGODB_URI=mongodb://myname:mypassword@mongo:27017/fastgpt?authSource=admin => MONGODB_URI=mongodb://myname:mypassword@ip:27017/fastgpt?authSource=admin)
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo:27017" }
]
})
# 檢查狀態。如果提示 rs0 狀態,則代表運行成功
rs.status()
這一步會有很大的問題。官方的倉庫也有大量的人反映 https://github.com/labring/FastGPT/issues/823
官方的解決方案我放到最后了,參考之后并沒有解決。安裝時一切正常。登陸時,卻提示:
Operation users.findOne() buffering timed out after 10000ms
后來反復刪除安裝依然不行。但是在啟動過程中發現Docker提示:WARNING: MongoDB 5.0+ requires a CPU with AVX support
查了一下,應該是鏡像不支持Mac M2芯片,但是看界面上mongo容器是正常Running狀態。
于是進入容器檢查
docker exec -it mongo bash
ps aux|grep mongo
發現并沒有mongo進程,查了一下數據目錄,也沒有文件出來。懷疑是mongo并沒有啟動。
于是重新檢查docker-compose.yml配置文件。
把image的基礎鏡像改為官方版本,支持aarm64的Mac鏡像的。
具體操作為:修改docker-compose.yml
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18
修改為:
image: mongo:5.0.18
保存并重新安裝:
docker-compose down
docker-compose up -d
這下檢查數據庫有內容了。再回過去,初始化官方要求的副本集。一切正常了。
四、訪問 FastGPT并使用
目前可以通過 ip:3000 直接訪問(注意防火墻)。登錄用戶名為 root,密碼為docker-compose.yml環境變量里設置的 DEFAULT_ROOT_PSW。
不修改配置的話,默認為:
http://localhost:3000
默認為:
賬號:root
密碼:1234
如果布到公網可以加一層Nginx,綁定上域名使用。
Mongo 啟動失敗
docker-compose 示例優化 Mongo 副本集參數,不需要手動創建再掛載。如果無法啟動,可以嘗試更換下面的腳本:
1、終端中執行:
openssl rand -base64 756 > ./mongodb.key
chmod 600 ./mongodb.key
chown 999:root ./mongodb.key
2、修改 docker-compose.yml:
mongo:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
container_name: mongo
ports:
- 27017:27017
networks:
- fastgpt
command: mongod --keyFile /data/mongodb.key --replSet rs0
environment:
# 默認的用戶名和密碼,只有首次允許有效
- MONGO_INITDB_ROOT_USERNAME=myusername
- MONGO_INITDB_ROOT_PASSWORD=mypassword
volumes:
- ./mongo/data:/data/db
- ./mongodb.key:/data/mongodb.key
3、重啟服務
docker-compose down
docker-compose up -d
4、進入容器執行副本集合初始化(看上方)
最后的界面如圖

可以往里面導入文章,FastGPT會自動進行處理了。
如果有別的模型,比如訊飛的,360的。也可以接入,方法,
就是使用OneAPI包裝這幾家的API。
修改config.json,第二步下載的配置文件之一,增加上對應平臺的model參數即可。
沒有ChatGPT依然可以玩國內的AI,免費的也不少。要不要來一套啊。。。
更多精彩內容,請關注我的公眾號:青塬科技。

浙公網安備 33010602011771號