??歡迎關注【AI技術開發者】
?
經過優化,在不影響FastGPT功能的情況下,大幅降低了部署的設備配置要求,僅需1c1h即可正常部署使用。
官方要求配置:
?
?
優化后的實際占用情況:
運行內存僅需370M(測試學習場景下)
?
?
官方推薦部署容器:
?pg?
?mongo?
?sandbox?
?fastgpt?
?mysql?
?oneapi?
優化后實際部署容器:
?fastgpt?
?new-api?
?mongo?
?sandbox?
?pg?
優化內容:
刪除mysql容器,降低內存占用。
將oneapi更換為new-api,原使用的mysql數據庫更換為pg數據庫。
使用pg容器作為公共數據庫,存儲FastGPT的向量數據和new-api的數據。
并且優化后不會影響FastGPT的更新及使用。
開始部署
部署前,需要提前配置好docker環境
?
?
準備配置文件
首先下載配置文件
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json
這個暫時不用修改
創建docker-compose.yml?編排文件,寫入以下內容(可根據情況自行更改參數)
默認對外開放端口:
12002:FastGPT
12003:new-api
12004:pg數據庫
# 數據庫的默認賬號和密碼僅首次運行時設置有效
# 如果修改了賬號密碼,記得改數據庫和項目連接參數,別只改一處~
# 該配置文件只是給快速啟動,測試使用。正式使用,記得務必修改賬號密碼,以及調整合適的知識庫參數,共享內存等。
# 如何無法訪問 dockerhub 和 git,可以用阿里云(阿里云沒有arm包)version: '3.3'
services:# dbpg:# image: pgvector/pgvector:0.7.0-pg15 # docker hubimage: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云container_name: pgrestart: alwaysports: # 生產環境建議不要暴露- 12005:5432networks:- fastgptenvironment:# 這里的配置只有首次運行生效。修改后,重啟鏡像是不會生效的。需要把持久化數據刪除再重啟,才有效果- POSTGRES_USER=username- POSTGRES_PASSWORD=password- POSTGRES_DB=postgresvolumes:- ./pg/data:/var/lib/postgresql/datamongo:# image: mongo:5.0.18 # dockerhubimage: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云# image: mongo:4.4.29 # cpu不支持AVX時候使用container_name: mongorestart: alwaysports:- 27017:27017networks:- fastgptcommand: mongod --keyFile /data/mongodb.key --replSet rs0environment:- MONGO_INITDB_ROOT_USERNAME=myusername- MONGO_INITDB_ROOT_PASSWORD=mypasswordvolumes:- ./mongo/data:/data/dbentrypoint:- bash- -c- |openssl rand -base64 128 > /data/mongodb.keychmod 400 /data/mongodb.keychown 999:999 /data/mongodb.keyecho 'const isInited = rs.status().ok === 1if(!isInited){rs.initiate({_id: "rs0",members: [{ _id: 0, host: "mongo:27017" }]})}' > /data/initReplicaSet.js# 啟動MongoDB服務exec docker-entrypoint.sh "$$@" &# 等待MongoDB服務啟動until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')" > /dev/null 2>&1; doecho "Waiting for MongoDB to start..."sleep 2done# 執行初始化副本集的腳本mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js# 等待docker-entrypoint.sh腳本執行的MongoDB服務進程wait $$!# fastgptsandbox:container_name: sandbox# image: ghcr.io/labring/fastgpt-sandbox:v4.8.17 # gitimage: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.8.17 # 阿里云networks:- fastgptrestart: alwaysfastgpt:container_name: fastgpt# image: ghcr.io/labring/fastgpt:v4.8.17 # gitimage: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.17 # 阿里云ports:- 12002:3000networks:- fastgptdepends_on:- mongo- pg- sandboxrestart: alwayscpus: '0.65' # 限制最多使用 1 個 CPU 核心environment:# 前端訪問地址: http://localhost:3000- FE_DOMAIN=http://localhost:12002# root 密碼,用戶名為: root。如果需要修改 root 密碼,直接修改這個環境變量,并重啟即可。- DEFAULT_ROOT_PSW=1234# AI模型的API地址哦。務必加 /v1。這里默認填寫了OneApi的訪問地址。- OPENAI_BASE_URL=http://new-api:3000/v1# AI模型的API Key。(這里默認填寫了OneAPI的快速默認key,測試通后,務必及時修改)- CHAT_API_KEY=sk-fastgpt# 數據庫最大連接數- DB_MAX_LINK=30# 登錄憑證密鑰- TOKEN_KEY=any# root的密鑰,常用于升級時候的初始化請求- ROOT_KEY=root_key# 文件閱讀加密- FILE_TOKEN_KEY=filetoken# MongoDB 連接參數. 用戶名myusername,密碼mypassword。- MONGODB_URI=mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin# pg 連接參數- PG_URL=postgresql://username:password@pg:5432/postgres# sandbox 地址- SANDBOX_URL=http://sandbox:3000# 日志等級: debug, info, warn, error- LOG_LEVEL=info- STORE_LOG_LEVEL=warnvolumes:- ./config.json:/app/data/config.json# new-apinew-api:image: 1ms.run/calciumion/new-api:latestcontainer_name: new-apirestart: alwayscommand: --log-dir /app/logsports:- 12003:3000volumes:- ./newapi:/data- ./napi-logs:/app/logsnetworks:- fastgptenvironment:- SQL_DSN=postgres://username:password@pg:5432/new-api # Point to the mysql service# - REDIS_CONN_STRING=redis://redis- TZ=Asia/Shanghai# - SESSION_SECRET=random_string # 多機部署時設置,必須修改這個隨機字符串!!!!!!!# - NODE_TYPE=slave # Uncomment for slave node in multi-node deployment# - SYNC_FREQUENCY=60 # Uncomment if regular database syncing is needed# - FRONTEND_BASE_URL=https://openai.justsong.cn # Uncomment for multi-node deployment with front-end URLhealthcheck:test: [ "CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'" ]interval: 30stimeout: 10sretries: 3
networks:fastgpt:
需要重點修改的是fastgpt?容器的環境變量
FE_DOMAIN= // 前端訪問地址
DEFAULT_ROOT_PSW= // 登錄密碼
OPENAI_BASE_URL= // AI模型的API地址哦。務必加 /v1。編排文件這里默認填寫了OneApi的訪問地址。
CHAT_API_KEY= // AI模型的API Key。
其他內容不重要,按需修改即可
啟動容器
在 docker-compose.yml 同級目錄下執行。請確保docker-compose?版本最好在2.17以上,否則可能無法執行自動化命令。
# 啟動容器
docker-compose up -d
打開 ip:12002? 即可訪問FastGPT頁面
后面會繼續更新如何添加其他自定義模型
?歡迎關注【AI技術開發者】
?