Docker Compose 快速部署

使用 Docker Compose 快速部署 FastGPT

推荐配置

环境最低配置(单节点)推荐配置
测试2c2g2c4g
100w 组向量4c8g 50GB4c16g 50GB
500w 组向量8c32g16c64g 200GB

部署架构图

Docker Compose 快速部署 - 图1

1. 准备好代理环境(国外服务器可忽略)

确保可以访问 OpenAI,具体方案可以参考:代理方案。或直接在 Sealos 上 部署 OneAPI,既解决代理问题也能实现多 Key 轮询、接入其他大模型。

2. 多模型支持

FastGPT 使用了 one-api 项目来管理模型池,其可以兼容 OpenAI 、Azure 、国内主流模型和本地模型等。

可选择 Sealos 快速部署 OneAPI,更多部署方法可参考该项目的 READMEDocker Compose 快速部署 - 图2,也可以直接通过以下按钮一键部署:

Deploy on Sealos

一、安装 Docker 和 docker-compose

Linux MacOS Windows

  1. # 安装 Docker
  2. curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  3. systemctl enable --now docker
  4. # 安装 docker-compose
  5. curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  6. chmod +x /usr/local/bin/docker-compose
  7. # 验证安装
  8. docker -v
  9. docker-compose -v
  10. # 如失效,自行百度~

推荐直接使用 OrbstackDocker Compose 快速部署 - 图4。可直接通过 Homebrew 来安装:

  1. brew install orbstack

或者直接下载安装包Docker Compose 快速部署 - 图5进行安装。

我们建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。

可以选择直接使用 WSL 2 后端在 Windows 中安装 Docker DesktopDocker Compose 快速部署 - 图6

也可以直接在 WSL 2 中安装命令行版本的 DockerDocker Compose 快速部署 - 图7

二、创建目录并下载 docker-compose.yml

依次执行下面命令,创建 FastGPT 文件并拉取docker-compose.ymlconfig.json,执行完后目录下会有 2 个文件。

非 Linux 环境或无法访问外网环境,可手动创建一个目录,并下载下面2个链接的文件: docker-compose.ymlDocker Compose 快速部署 - 图8,config.jsonDocker Compose 快速部署 - 图9

注意: docker-compose.yml 配置文件中 Mongo 为 5.x,部分服务器不支持,需手动更改其镜像版本为 4.4.24(需要自己在docker hub下载,阿里云镜像没做备份)

  1. mkdir fastgpt
  2. cd fastgpt
  3. curl -O https://raw.githubusercontent.com/labring/FastGPT/main/files/deploy/fastgpt/docker-compose.yml
  4. curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json

三、启动容器

在 docker-compose.yml 同级目录下执行。请确保docker-compose版本最好在2.17以上,否则可能无法执行自动化命令。

  1. # 启动容器
  2. docker-compose up -d
  3. # 等待10s,OneAPI第一次总是要重启几次才能连上Mysql
  4. sleep 10
  5. # 重启一次oneapi(由于OneAPI的默认Key有点问题,不重启的话会提示找不到渠道,临时手动重启一次解决,等待作者修复)
  6. docker restart oneapi

四、打开 OneAPI 添加模型

可以通过ip:3001访问OneAPI,默认账号为root密码为123456

在OneApi中添加合适的AI模型渠道。点击查看相关教程

五、访问 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;可忽略。

FAQ

Mongo 副本集自动初始化失败

最新的 docker-compose 示例优化 Mongo 副本集初始化,实现了全自动。目前在 unbuntu20,22 centos7, wsl2, mac, window 均通过测试。如果你的环境特殊,可以手动初始化副本集:

  1. 终端中执行下面命令,创建mongo密钥:
  1. openssl rand -base64 756 > ./mongodb.key
  2. chmod 600 ./mongodb.key
  3. # 修改密钥权限,部分系统是admin,部分是root
  4. chown 999:root ./mongodb.key
  1. 修改 docker-compose.yml,挂载密钥
  1. mongo:
  2. # image: mongo:5.0.18
  3. # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
  4. container_name: mongo
  5. ports:
  6. - 27017:27017
  7. networks:
  8. - fastgpt
  9. command: mongod --keyFile /data/mongodb.key --replSet rs0
  10. environment:
  11. # 默认的用户名和密码,只有首次允许有效
  12. - MONGO_INITDB_ROOT_USERNAME=myusername
  13. - MONGO_INITDB_ROOT_PASSWORD=mypassword
  14. volumes:
  15. - ./mongo/data:/data/db
  16. - ./mongodb.key:/data/mongodb.key
  1. 重启服务
  1. docker-compose down
  2. docker-compose up -d
  1. 进入容器执行副本集合初始化
  1. # 查看 mongo 容器是否正常运行
  2. docker ps
  3. # 进入容器
  4. docker exec -it mongo bash
  5. # 连接数据库(这里要填Mongo的用户名和密码)
  6. mongo -u myusername -p mypassword --authenticationDatabase admin
  7. # 初始化副本集。如果需要外网访问,mongo:27017 。如果需要外网访问,需要增加Mongo连接参数:directConnection=true
  8. rs.initiate({
  9. _id: "rs0",
  10. members: [
  11. { _id: 0, host: "mongo:27017" }
  12. ]
  13. })
  14. # 检查状态。如果提示 rs0 状态,则代表运行成功
  15. rs.status()

如何修改API地址和密钥

默认是写了OneAPi的连接地址和密钥,可以通过修改docker-compose.yml中,fastgpt容器的环境变量实现。

OPENAI_BASE_URL(API 接口的地址,需要加/v1) CHAT_API_KEY(API 接口的凭证)。

修改完后重启:

  1. docker-compose down
  2. docker-compose up -d

如何更新版本?

  1. 查看更新文档,确认要升级的版本,避免跨版本升级。

  2. 修改镜像 tag 到指定版本

  3. 执行下面命令会自动拉取镜像:

    1. docker-compose pull
    2. docker-compose up -d
  4. 执行初始化脚本(如果有)

如何自定义配置文件?

修改config.json文件,并执行docker-compose down再执行docker-compose up -d重起容器。具体配置,参考配置详解

如何检查自定义配置文件是否挂载

  1. docker logs fastgpt 可以查看日志,在启动容器后,第一次请求网页,会进行配置文件读取,可以看看有没有读取成功以及有无错误日志。
  2. docker exec -it fastgpt sh 进入 FastGPT 容器,可以通过ls data查看目录下是否成功挂载config.json文件。可通过cat data/config.json查看配置文件。

可能不生效的原因

  1. 挂载目录不正确
  2. 配置文件不正确,日志中会提示invalid json,配置文件需要是标准的 JSON 文件。
  3. 修改后,没有docker-compose downdocker-compose up -d,restart是不会重新挂载文件的。

如何检查环境变量是否正常加载

  1. docker exec -it fastgpt sh 进入 FastGPT 容器。
  2. 直接输入env命令查看所有环境变量。

为什么无法连接本地模型镜像。

docker-compose.yml中使用了桥接的模式建立了fastgpt网络,如想通过0.0.0.0或镜像名访问其它镜像,需将其它镜像也加入到网络中。

端口冲突怎么解决?

docker-compose 端口定义为:映射端口:运行端口

桥接模式下,容器运行端口不会有冲突,但是会有映射端口冲突,只需将映射端口修改成不同端口即可。

如果容器1需要连接容器2,使用容器2:运行端口来进行连接即可。

(自行补习 docker 基本知识)

relation “modeldata” does not exist

PG 数据库没有连接上/初始化失败,可以查看日志。FastGPT 会在每次连接上 PG 时进行表初始化,如果报错会有对应日志。

  1. 检查数据库容器是否正常启动
  2. 非 docker 部署的,需要手动安装 pg vector 插件
  3. 查看 fastgpt 日志,有没有相关报错

Illegal instruction

可能原因:

  1. arm架构。需要使用 Mongo 官方镜像: mongo:5.0.18
  2. cpu 不支持 AVX,无法用 mongo5,需要换成 mongo4.x。把 mongo 的 image 换成: mongo:4.4.29

Operation auth_codes.findOne() buffering timed out after 10000ms

mongo连接失败,查看mongo的运行状态对应日志。

可能原因:

  1. mongo 服务有没有起来(有些 cpu 不支持 AVX,无法用 mongo5,需要换成 mongo4.x,可以docker hub找个最新的4.x,修改镜像版本,重新运行)
  2. 连接数据库的环境变量填写错误(账号密码,注意host和port,非容器网络连接,需要用公网ip并加上 directConnection=true)
  3. 副本集启动失败。导致容器一直重启。

首次部署,root用户提示未注册

日志会有错误提示。大概率是没有启动 Mongo 副本集模式。

无法导出知识库、无法使用语音输入/播报

没配置 SSL 证书,无权使用部分功能。