FastGPT及大模型API(Docker)私有化部署指南

​​欢迎关注【AI技术开发者】

经过优化,在不影响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:
  # db
  pg:
    # image: pgvector/pgvector:0.7.0-pg15 # docker hub
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云
    container_name: pg
    restart: always
    ports: # 生产环境建议不要暴露
      - 12005:5432
    networks:
      - fastgpt
    environment:
      # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
      - POSTGRES_USER=username
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=postgres
    volumes:
      - ./pg/data:/var/lib/postgresql/data
  mongo:
    # image: mongo:5.0.18 # dockerhub
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
    # image: mongo:4.4.29 # cpu不支持AVX时候使用
    container_name: mongo
    restart: always
    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
    entrypoint:
      - bash
      - -c
      - |
        openssl rand -base64 128 > /data/mongodb.key
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        echo 'const isInited = rs.status().ok === 1
        if(!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; do
          echo "Waiting for MongoDB to start..."
          sleep 2
        done

        # 执行初始化副本集的脚本
        mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js

        # 等待docker-entrypoint.sh脚本执行的MongoDB服务进程
        wait $$!

  # fastgpt
  sandbox:
    container_name: sandbox
    # image: ghcr.io/labring/fastgpt-sandbox:v4.8.17 # git
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.8.17 # 阿里云
    networks:
      - fastgpt
    restart: always
  fastgpt:
    container_name: fastgpt
    # image: ghcr.io/labring/fastgpt:v4.8.17 # git
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.17 # 阿里云
    ports:
      - 12002:3000
    networks:
      - fastgpt
    depends_on:
      - mongo
      - pg
      - sandbox
    restart: always
    cpus: '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=warn
    volumes:
      - ./config.json:/app/data/config.json

  # new-api
  
  new-api:
    image: 1ms.run/calciumion/new-api:latest
    container_name: new-api
    restart: always
    command: --log-dir /app/logs
    ports:
      - 12003:3000
    volumes:
      - ./newapi:/data
      - ./napi-logs:/app/logs
    networks:
      - fastgpt
    environment:
      - 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 URL
    healthcheck:
      test: [ "CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'" ]
      interval: 30s
      timeout: 10s
      retries: 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页面

后面会继续更新如何添加其他自定义模型

​欢迎关注【AI技术开发者】

相关推荐
RationalDysaniaer12 小时前
k8s配置与存储
云原生·容器·kubernetes
ybb70463015 小时前
linux第二次作业
linux·运维·服务器
大白同学42116 小时前
【Linux】进程间通信
linux·运维·服务器
..Move...17 小时前
Docker镜像制作
运维·docker·容器
码龄3年 审核中1 天前
说说SSH的端口转发
大数据·运维·ssh
盛世隐者1 天前
【Linux】定制Linux系统
linux·运维·服务器
行思理1 天前
Docker 应该如何学习 分四个阶段
学习·docker·容器
..Move...1 天前
Docker应用部署tomcat和nginx
nginx·docker·tomcat
Lxt.星翊1 天前
MySQL(安装和卸载、数据库存储原理图)
linux·运维·windows
苹果醋31 天前
JAVA面试汇总(二)多线程(五)
运维·vue.js·spring boot·nginx·课程设计