document/content/docs/self-host/deploy/docker.mdx
import { Alert } from '@/components/docs/Alert';
非常轻量,适合知识库索引量在 5000 万以下。
| 环境 | 最低配置(单节点) | 推荐配置 |
|---|---|---|
| 测试(可以把计算进程设置少一些) | 2c4g | 2c8g |
| 100w 组向量 | 4c8g 50GB | 4c16g 50GB |
| 500w 组向量 | 8c32g 200GB | 16c64g 200GB |
对于亿级以上向量性能更优秀。
| 环境 | 最低配置(单节点) | 推荐配置 |
|---|---|---|
| 测试 | 2c8g | 4c16g |
| 100w 组向量 | 未测试 | |
| 500w 组向量 |
Zilliz Cloud 由 Milvus 原厂打造,是全托管的 SaaS 向量数据库服务,性能优于 Milvus 并提供 SLA,点击使用 Zilliz Cloud。
由于向量库使用了 Cloud,无需占用本地资源,无需太关注。
SeekDB 是基于 MySQL 协议的高性能向量数据库,与 OceanBase 协议完全兼容,支持高效的向量检索。
| 环境 | 最低配置(单节点) | 推荐配置 |
|---|---|---|
| 测试(可以把计算进程设置少一些) | 2c4g | 2c8g |
| 100w 组向量 | 4c8g 50GB | 4c16g 50GB |
| 500w 组向量 | 8c32g 200GB | 16c64g 200GB |
SeekDB 使用 MySQL 协议,与 OceanBase 完全兼容:
<Tabs items={['Linux','MacOS','Windows']}> <Tab value="Linux">
# 安装 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
# 如失效,自行百度~
brew install orbstack
或者直接下载安装包进行安装。
</Tab> <Tab value="Windows"> 我们建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。可以选择直接使用 WSL 2 后端在 Windows 中安装 Docker Desktop。
也可以直接在 WSL 2 中安装命令行版本的 Docker。
</Tab> </Tabs>需要在 Linux/MacOS/Windows WSL 环境下执行,引导用户选择部署环境、向量库版本,IP地址等。
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh)
如果部署环境为非 *nix 环境或无法访问外网,需要手动下载 docker-compose.yml 进行部署
docker-compose.yml 文件:config.json 文件:下载 config.json 文件
对于 Zilliz 版本 还需要获取密钥,参考 部署 Zilliz 版本获取账号和密钥, 其他版本可直接下一步。
以下端口必须被访问到:
在 docker-compose.yml 同级目录下执行。请确保docker-compose版本最好在2.17以上,否则可能无法执行自动化命令。
# 启动容器
docker compose --profile prepull pull opensandbox-agent-sandbox-image opensandbox-execd-image opensandbox-egress-image && docker compose up -d
可通过第二步开放的端口/域名访问 FastGPT。
登录用户名为 root,密码为docker-compose.yml环境变量里设置的 DEFAULT_ROOT_PSW。
每次重启容器,都会自动初始化 root 用户,密码为 1234(与环境变量中的DEFAULT_ROOT_PSW一致)。
语言模型和索引模型,并自动跳转模型配置页面。系统必须至少有这两类模型才能正常使用。账号-模型提供商页面,进行模型配置。点击查看相关教程从 V4.14.0 版本开始,fastgpt-plugin 镜像仅提供运行环境,不再预装系统插件,所有 FastGPT 系统需手动安装系统插件。
| FastGPT-plugin 版本 | FastGPT 主服务 |
|---|---|
| 0.6.x | >= 4.14.11 |
| 0.5.x | >= 4.14.6, < 4.14.11 |
| < 0.5.0 | < 4.14.6 |
检查STORAGE_EXTERNAL_ENDPOINT变量,需设置成客户端和 FastGPT 服务均可访问的地址。
重要:
填入的地址不可为
127.0.0.1或者localhost等本地回环地址,可填 Docker 部署时的宿主机本地IP,但是需要把宿主机固定为静态 IP;或者统一为一个固定域名;目的是为了避免对象存储签名 URL 时,签发与上传的 URL 不一致导致的 403 错误。具体查看 对象存储配置及常见问题
无法点击任何内容,刷新也无效。此时需要删除该tab,重新打开一次即可。
最新的 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()
默认是写了OneAPi的连接地址和密钥,可以通过修改docker-compose.yml中,fastgpt容器的环境变量实现。
OPENAI_BASE_URL(API 接口的地址,需要加/v1)
CHAT_API_KEY(API 接口的凭证)。
修改完后重启:
docker compose down
docker compose up -d
查看更新文档,确认要升级的版本,避免跨版本升级。
修改镜像 tag 到指定版本
执行下面命令会自动拉取镜像:
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 基本知识)
PG 数据库没有连接上/初始化失败,可以查看日志。FastGPT 会在每次连接上 PG 时进行表初始化,如果报错会有对应日志。
可能原因:
auth_codes.findOne() buffering timed out after 10000msmongo连接失败,查看mongo的运行状态对应日志。
可能原因:
Illegal instruction.... Waiting for MongoDB to start: cpu 不支持 AVX,无法用 mongo5,需要换成 mongo4.x日志会有错误提示。大概率是没有启动 Mongo 副本集模式。
没配置 SSL 证书,无权使用部分功能。
由于服务初始化错误,系统重启导致。
修改docker-compose.yml文件中DEFAULT_ROOT_PSW并重启即可,密码会自动更新。
打开 Zilliz Cloud, 创建实例并获取相关秘钥。
<Alert icon="🤖" context="success">MILVUS_ADDRESS和MILVUS_TOKEN链接参数,分别对应 zilliz 的 Public Endpoint 和 Api key,记得把自己ip加入白名单。