Docker Compose 快速部署
使用 Docker Compose 快速部署 FastGPT
前置知识
部署架构图
PgVector版本
非常轻量,适合知识库索引量在 5000 万以下。
环境 | 最低配置(单节点) | 推荐配置 |
---|---|---|
测试(可以把计算进程设置少一些) | 2c4g | 2c8g |
100w 组向量 | 4c8g 50GB | 4c16g 50GB |
500w 组向量 | 8c32g 200GB | 16c64g 200GB |
Milvus版本
对于亿级以上向量性能更优秀。
环境 | 最低配置(单节点) | 推荐配置 |
---|---|---|
测试 | 2c8g | 4c16g |
100w 组向量 | 未测试 | |
500w 组向量 |
zilliz cloud版本
Zilliz Cloud 由 Milvus 原厂打造,是全托管的 SaaS 向量数据库服务,性能优于 Milvus 并提供 SLA,点击使用 Zilliz Cloud 。
由于向量库使用了 Cloud,无需占用本地资源,无需太关注。
1. 确保网络环境
如果使用
OpenAI
等国外模型接口,请确保可以正常访问,否则会报错:
Connection error
等。 方案可以参考:
代理方案
2. 准备 Docker 环境
# 安装 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/v2.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
# 如失效,自行百度~
我们建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。
可以选择直接 使用 WSL 2 后端在 Windows 中安装 Docker Desktop 。
也可以直接 在 WSL 2 中安装命令行版本的 Docker 。
1. 获取
docker-compose.yml
和
config.json
配置文件
方法一:使用脚本部署
国内镜像(阿里云)
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=cn --vector=pg
非国内镜像(dockhub, ghcr)
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=global --vector=pg
需要在 Linux/MacOS/Windows WSL 环境下执行
国内镜像(阿里云)
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=cn --vector=oceanbase
非国内镜像(dockhub, ghcr)
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=global --vector=oceanbase
需要在 Linux/MacOS/Windows WSL 环境下执行
国内镜像(阿里云)
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=cn --vector=milvus
非国内镜像(dockhub, ghcr)
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=global --vector=milvus
需要在 Linux/MacOS/Windows WSL 环境下执行
国内镜像(阿里云)
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=cn --vector=zilliz
非国内镜像(dockhub, ghcr)
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=global --vector=zilliz
需要在 Linux/MacOS/Windows WSL 环境下执行
zilliz 还需要获取密钥,参考 部署 Zilliz 版本获取账号和密钥
方法二:手动下载部署
如果部署环境为非 *nix 环境或无法访问外网,需要手动下载
docker-compose.yml
进行部署
选择并下载您的
docker-compose.yml
文件
下载 config.json 文件
所有
docker-compose.yml
配置文件中
MongoDB
为 5.x,需要用到AVX指令集,部分 CPU 不支持,需手动更改其镜像版本为 4.4.24**(需要自己在docker hub下载,阿里云镜像没做备份)
2. 修改环境变量
按照您的需求自行修改环境变量,建议在生产环境修改账号密码等。 对于 Zilliz 版本 还需要获取密钥,参考 部署 Zilliz 版本获取账号和密钥
3. 修改 config.json 配置文件
修改
config.json
文件中的
mcpServerProxyEndpoint
值,设置成
mcp server
的公网可访问地址,yml 文件中默认给出了映射到 3005 端口,如通过 IP 访问,则可能是:
120.172.2.10:3005
。
4. 启动容器
在 docker-compose.yml 同级目录下执行。请确保
docker-compose
版本最好在2.17以上,否则可能无法执行自动化命令。
# 启动容器
docker-compose up -d
5. 访问 FastGPT
目前可以通过
ip:3000
直接访问(注意开放防火墙)。登录用户名为
root
,密码为
docker-compose.yml
环境变量里设置的
DEFAULT_ROOT_PSW
。
如果需要域名访问,请自行安装并配置 Nginx。
首次运行,会自动初始化 root 用户,密码为
1234
(与环境变量中的
DEFAULT_ROOT_PSW
一致),日志可能会提示一次
MongoServerError: Unable to read from a snapshot due to pending collection catalog changes;
可忽略。
6. 配置模型
语言模型
和
索引模型
,并自动跳转模型配置页面。系统必须至少有这两类模型才能正常使用。
账号-模型提供商
页面,进行模型配置。
点击查看相关教程
登录系统后,浏览器无法响应
无法点击任何内容,刷新也无效。此时需要删除该tab,重新打开一次即可。
Mongo 副本集自动初始化失败
最新的 docker-compose 示例优化 Mongo 副本集初始化,实现了全自动。目前在 unbuntu20,22 centos7, wsl2, mac, window 均通过测试。仍无法正常启动,大部分是因为 cpu 不支持 AVX 指令集,可以切换 Mongo4.x 版本。
如果是由于,无法自动初始化副本集合,可以手动初始化副本集:
openssl rand -base64 756 > ./mongodb.key
chmod 600 ./mongodb.key
# 修改密钥权限,部分系统是admin,部分是root
chown 999:root ./mongodb.key
mongo:
# image: mongo:5.0.18
# 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
docker-compose down
docker-compose up -d
# 查看 mongo 容器是否正常运行
docker ps
# 进入容器
docker exec -it mongo bash
# 连接数据库(这里要填Mongo的用户名和密码)
mongo -u myusername -p mypassword --authenticationDatabase admin
# 初始化副本集。如果需要外网访问,mongo:27017 。如果需要外网访问,需要增加Mongo连接参数:directConnection=true
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo:27017" }
# 检查状态。如果提示 rs0 状态,则代表运行成功
rs.status()
如何修改API地址和密钥
默认是写了OneAPi的连接地址和密钥,可以通过修改
docker-compose.yml
中,fastgpt容器的环境变量实现。
OPENAI_BASE_URL
(API 接口的地址,需要加/v1)
CHAT_API_KEY
(API 接口的凭证)。
修改完后重启:
docker-compose down
docker-compose up -d
如何更新版本?
查看 更新文档 ,确认要升级的版本,避免跨版本升级。
修改镜像 tag 到指定版本
执行下面命令会自动拉取镜像:
docker-compose pull
docker-compose up -d
执行初始化脚本(如果有)
如何自定义配置文件?
修改
config.json
文件,并执行
docker-compose down
再执行
docker-compose up -d
重起容器。具体配置,参考
配置详解
。
如何检查自定义配置文件是否挂载
docker logs fastgpt
可以查看日志,在启动容器后,第一次请求网页,会进行配置文件读取,可以看看有没有读取成功以及有无错误日志。
docker exec -it fastgpt sh
进入 FastGPT 容器,可以通过
ls data
查看目录下是否成功挂载
config.json
文件。可通过
cat data/config.json
查看配置文件。
可能不生效的原因
invalid json
,配置文件需要是标准的 JSON 文件。
docker-compose down
再
docker-compose up -d
,restart是不会重新挂载文件的。
如何检查环境变量是否正常加载
docker exec -it fastgpt sh
进入 FastGPT 容器。
env
命令查看所有环境变量。
为什么无法连接
本地模型
镜像
docker-compose.yml
中使用了桥接的模式建立了
fastgpt
网络,如想通过0.0.0.0或镜像名访问其它镜像,需将其它镜像也加入到网络中。
端口冲突怎么解决?
docker-compose 端口定义为:
映射端口:运行端口
。
桥接模式下,容器运行端口不会有冲突,但是会有映射端口冲突,只需将映射端口修改成不同端口即可。
如果
容器1
需要连接
容器2
,使用
容器2:运行端口
来进行连接即可。
(自行补习 docker 基本知识)
relation "modeldata" does not exist
PG 数据库没有连接上/初始化失败,可以查看日志。FastGPT 会在每次连接上 PG 时进行表初始化,如果报错会有对应日志。
Illegal instruction
可能原因:
Operation
auth_codes.findOne()
buffering timed out after 10000ms
mongo连接失败,查看mongo的运行状态 对应日志 。
可能原因:
Illegal instruction.... Waiting for MongoDB to start
: cpu 不支持 AVX,无法用 mongo5,需要换成 mongo4.x
首次部署,root用户提示未注册
日志会有错误提示。大概率是没有启动 Mongo 副本集模式。
无法导出知识库、无法使用语音输入/播报
没配置 SSL 证书,无权使用部分功能。
登录提示 Network Error
由于服务初始化错误,系统重启导致。
如何修改密码
修改
docker-compose.yml
文件中
DEFAULT_ROOT_PSW
并重启即可,密码会自动更新。