FastGPT及大模型API(Docker)私有化部署指南
经过优化,在不影响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页面
后面会继续更新如何添加其他自定义模型