Docker Compose 部署
使用 Docker Compose 快速部署 FastGPT
前置知识
- 基础的网络知识:端口,防火墙……
- Docker 和 Docker Compose 基础知识
部署架构图

- MongoDB:用于存储除了向量外的各类数据
- PostgreSQL/Milvus/Oceanbase/SeekDB:存储向量数据
- AIProxy: 聚合各类 AI API,支持多模型调用(任何模型问题,先自行通过 OneAPI 测试校验)
推荐配置
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,无需占用本地资源,无需太关注。
SeekDB 版本
SeekDB 是基于 MySQL 协议的高性能向量数据库,与 OceanBase 协议完全兼容,支持高效的向量检索。
| 环境 | 最低配置(单节点) | 推荐配置 |
|---|---|---|
| 测试(可以把计算进程设置少一些) | 2c4g | 2c8g |
| 100w 组向量 | 4c8g 50GB | 4c16g 50GB |
| 500w 组向量 | 8c32g 200GB | 16c64g 200GB |
SeekDB 使用 MySQL 协议,与 OceanBase 完全兼容:
- 支持 1536 维向量检索
- 内置 HNSW 索引算法
- 提供批量插入和查询优化
- 自动重试和连接池管理
前置工作
准备 Docker-compose 环境
# 安装 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. 获取配置文件
方法一:使用交互式脚本部署
需要在 Linux/MacOS/Windows WSL 环境下执行,引导用户选择部署环境、向量库版本,IP 地址等。
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh)脚本会自动完成以下操作:
- 下载或复制
docker-compose.yml,并下载config.json。 - 引导选择 S3 与 MCP 的外部访问地址,并写入配置文件。
- 随机生成
root登录密码、服务间 Token、应用密钥和组件密码,并写入docker-compose.yml。 - 自动检测宿主机 Docker socket 路径,必要时替换
docker-compose.yml中的挂载路径。
执行完成后,终端会输出本次生成的 root 登录密码,请妥善保存生成后的 docker-compose.yml。后续升级时建议基于该文件调整,不要直接丢失已生成的密码和密钥。
方法二:手动下载部署
如果需要固定使用某个 docker-compose.yml 文件,推荐先手动下载 docker-compose.yml 和 install.sh,再通过 install.sh 的本地 compose 模式生成最终配置。这样仍然可以复用脚本里的随机密码、S3/MCP 地址写入、Docker socket 检测等能力。
- 下载所需的
docker-compose.yml文件到服务器,例如:
curl -fsSL https://doc.fastgpt.cn/deploy/docker/v4.15/cn/docker-compose.pg.yml -o docker-compose.source.yml点击展开查看不同数据库的 docker-compose 配置文件下载地址
- Pgvector
- 中国大陆地区镜像源(阿里云):docker-compose.pg.yml
- 全球镜像源(dockerhub, ghcr):docker-compose.pg.yml
- Oceanbase
- 中国大陆地区镜像源(阿里云):docker-compose.oceanbase.yml
- 全球镜像源(dockerhub, ghcr):docker-compose.oceanbase.yml
- Milvus
- 中国大陆地区镜像源(阿里云):docker-compose.milvus.yml
- 全球镜像源(dockerhub, ghcr):docker-compose.milvus.yml
- Zilliz
- 中国大陆地区镜像源(阿里云):docker-compose.zilliz.yml
- 全球镜像源(dockerhub, ghcr):docker-compose.zilliz.yml
- SeekDB
- 中国大陆地区镜像源(阿里云):docker-compose.seekdb.yml
- 全球镜像源(dockerhub, ghcr):docker-compose.seekdb.yml
- 下载
install.sh到服务器:
curl -fsSL https://doc.fastgpt.cn/deploy/install.sh -o install.sh- 使用
install.sh读取本地 compose 文件并生成最终部署配置:
FASTGPT_LOCAL_COMPOSE_PATH=./docker-compose.source.yml bash install.sh脚本会复制该 compose 文件为最终的 docker-compose.yml,并继续下载 config.json、随机生成登录密码和各类凭证、写入 S3/MCP 地址。生成完成后,按终端输出的 root 密码登录。
完全离线环境下,需要同时准备 docker-compose.yml、config.json 和 install.sh。如果无法让脚本下载 config.json,则需要手动修改 DEFAULT_ROOT_PSW、服务 Token、数据库密码、S3/MCP 地址等配置。
自定义镜像源部署
如果需要使用企业内网 Harbor、私有 Registry 或自建镜像加速源,可以先下载 docker-compose.yml,把所有 image: 改成自己的镜像地址,再走本地 compose 模式:
FASTGPT_LOCAL_COMPOSE_PATH=./docker-compose.yml bash install.sh如果启用 Agent/Skill 沙盒,还需要单独部署 fastgpt-agent-sandbox-proxy,并同步替换 AGENT_SANDBOX_SEALOS_IMAGE 或 AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO,确保沙盒 provider 可以拉取 fastgpt-agent-sandbox 镜像。v4.15.0 默认部署文件不内置 fastgpt-agent-sandbox-proxy,也不会默认启动 OpenSandbox;沙盒 provider 的接入方式见 V4.15.0 升级说明。
2. 修改环境变量
对于 Zilliz 版本 还需要获取密钥,参考 部署 Zilliz 版本获取账号和密钥, 其他版本可直接下一步。
3. 开放外网端口/配置域名
以下端口必须被访问到:
- 3000 端口(FastGPT 主服务)
- 9000 端口(S3 服务)
- 3003 端口(FastGPT SSE MCP server 服务)
4. 启动容器
在 docker-compose.yml 同级目录下执行。请确保 docker-compose 版本最好在 2.17 以上,否则可能无法执行自动化命令。
# 启动容器
docker compose up -d5. 访问 FastGPT
可通过第三步开放的端口/域名访问 FastGPT。登录用户名为 root,密码为 docker-compose.yml 环境变量里设置的 DEFAULT_ROOT_PSW。
如果使用交互式脚本部署,脚本会随机生成 DEFAULT_ROOT_PSW,并在执行完成后输出本次登录密码;如果手动下载部署,请自行修改 docker-compose.yml 中的默认密码后再启动服务。每次重启容器,都会按 DEFAULT_ROOT_PSW 自动更新 root 用户密码。
6. 配置模型
- 首次登录 FastGPT 后,系统会提示未配置
语言模型和索引模型,并自动跳转模型配置页面。系统必须至少有这两类模型才能正常使用。 - 如果系统未正常跳转,可以在
账号-模型提供商页面,进行模型配置。点击查看相关教程 - 目前已知可能问题:首次进入系统后,整个浏览器 tab 无法响应。此时需要删除该 tab,重新打开一次即可。
7. 按需安装系统插件
从 V4.14.0 版本开始,fastgpt-plugin 镜像仅提供运行环境,不再预装系统插件,所有 FastGPT 系统需手动安装系统插件。
- 通过插件市场安装,默认会向公开的 FastGPT Marketplace 获取数据进行安装。
- 如果你的 FastGPT 无法访问插件市场,则可以手动访问 FastGPT 插件市场,先下载 .pkg 文件,再通过文件导入的方式安装到系统里。
- 除了安装外,还可对工具进行排序、默认安装、标签管理等。

FAQ
FastGPT 和 FastGPT-plugin 版本对应
| FastGPT-plugin 版本 | FastGPT 主服务 |
|---|---|
| 1.x | 4.15.x |
| 0.6.x | >= 4.14.11, < 4.15.0 |
| 0.5.x | >= 4.14.6, < 4.14.11 |
| < 0.5.0 | < 4.14.6 |
S3 无法正常连接
检查 STORAGE_EXTERNAL_ENDPOINT 变量,需设置成客户端和 FastGPT 服务均可访问的地址。
重要:
填入的地址不可为
127.0.0.1或者localhost等本地回环地址,可填 Docker 部署时的宿主机本地 IP,但是需要把宿主机固定为静态 IP;或者统一为一个固定域名;目的是为了避免对象存储签名 URL 时,签发与上传的 URL 不一致导致的 403 错误。具体查看 对象存储配置及常见问题
登录系统后,浏览器无法响应
无法点击任何内容,刷新也无效。此时需要删除该 tab,重新打开一次即可。
Mongo 副本集自动初始化失败
最新的 docker-compose 示例优化 Mongo 副本集初始化,实现了全自动。目前在 unbuntu20,22 centos7, wsl2, mac, window 均通过测试。仍无法正常启动,大部分是因为 cpu 不支持 AVX 指令集,可以切换 Mongo4.x 版本。
如果是由于,无法自动初始化副本集合,可以手动初始化副本集:
- 终端中执行下面命令,创建 mongo 密钥:
openssl rand -base64 756 > ./mongodb.key
chmod 600 ./mongodb.key
# 修改密钥权限,部分系统是admin,部分是root
chown 999:root ./mongodb.key- 修改 docker-compose.yml,挂载密钥
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 up -d -
执行初始化脚本(如果有)
如何自定义环境变量?
修改 docker-compose.yml 中 fastgpt-app 的 environment 配置,并执行 docker compose up -d 重启容器。具体配置参考环境变量说明。
如何检查环境变量是否正常加载
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 时进行表初始化,如果报错会有对应日志。
- 检查数据库容器是否正常启动
- 非 docker 部署的,需要手动安装 pg vector 插件
- 查看 fastgpt 日志,有没有相关报错
Illegal instruction
可能原因:
- arm 架构。需要使用 Mongo 官方镜像:mongo:5.0.18
- cpu 不支持 AVX,无法用 mongo5,需要换成 mongo4.x。把 mongo 的 image 换成: mongo:4.4.29
Operation auth_codes.findOne() buffering timed out after 10000ms
mongo 连接失败,查看 mongo 的运行状态对应日志。
可能原因:
- mongo 服务有没有起来(有些 cpu 不支持 AVX,无法用 mongo5,需要换成 mongo4.x,可以 docker hub 找个最新的 4.x,修改镜像版本,重新运行)
- 连接数据库的环境变量填写错误(账号密码,注意 host 和 port,非容器网络连接,需要用公网 ip 并加上 directConnection=true)
- 副本集启动失败。导致容器一直重启。
Illegal instruction.... Waiting for MongoDB to start: cpu 不支持 AVX,无法用 mongo5,需要换成 mongo4.x
首次部署,root 用户提示未注册
日志会有错误提示。大概率是没有启动 Mongo 副本集模式。
无法导出知识库、无法使用语音输入/播报
没配置 SSL 证书,无权使用部分功能。
登录提示 Network Error
由于服务初始化错误,系统重启导致。
- 90%是由于配置文件写不对,导致 JSON 解析报错
- 剩下的基本是因为向量数据库连不上
如何修改密码
修改 docker-compose.yml 文件中 DEFAULT_ROOT_PSW 并重启即可,密码会自动更新。
部署 Zilliz 版本,获取账号和密钥
打开 Zilliz Cloud , 创建实例并获取相关秘钥。

- 修改
MILVUS_ADDRESS和MILVUS_TOKEN链接参数,分别对应zilliz的Public Endpoint和Api key,记得把自己 ip 加入白名单。