Docker部署前后端分离的大模型一站式服务chatgpt-plus

项目地址:yangjian102621/chatgpt-plus: AI 助手全套开源解决方案,自带运营管理后台,开箱即用。集成了 ChatGPT, Azure, ChatGLM,讯飞星火,文心一言等多个平台的大语言模型。支持 MJ AI 绘画,Stable Diffusion AI 绘画,微博热搜等插件工具。采用 Go + Vue3 + element-plus 实现。 (github.com)

有支付有自定义模型,前端设计也十分优秀,个人看来胜过next与chatgpt-web的优秀作品。

一、打包docker镜像方法

由于官方在1.8版本后不再提供docker镜像,所以需要自己打包。

打包环境

  • Golang v1.19
  • Node v18

后端打包

git clone https://github.com/yangjian102621/chatgpt-plus.git
cd api

## 先编译
# AMD 架构
make clean amd64
# ARM 架构
make clean arm64

##  再打包
cd ../build
docker build -t chatgpt-plus-api:$版本号 -f dockerfile-api-go ../

前端打包

cd web

## 安装依赖
npm install
## 编译
npm run build 
##  打包
cd ../build
docker build -t chatgpt-plus-web:$版本号 -f dockerfile-vue ../

之后从docker管理器中导出镜像即可。

二、部署方法

ChatPlus 基础版的部署非常简单,你只需将项目根目录下的 deploy 文件夹拷贝到你需要部署的服务器,然后修改 docker-compose.yaml,把 chatgpt-plus-apichatgpt-plus-web 镜像版本改成最新稳定版即可:

version: '3'
services:
  # mysql
  chatgpt-plus-mysql:
    image: mysql:8.0.33
    container_name: chatgpt-plus-mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=设置密码
    ports:
      - "3307:3306"
    volumes :
      - ./mysql/conf/my.cnf:/etc/mysql/my.cnf
      - ./mysql/data:/var/lib/mysql
      - ./mysql/logs:/var/log/mysql
      - ./mysql/init.d:/docker-entrypoint-initdb.d/
  
  # redis 
  chatgpt-plus-redis:
    image: redis:6.0.16
    restart: always 
    container_name: chatgpt-plus-redis
    command: redis-server --requirepass 设置密码
    volumes :
      - ./redis/data:/data
    ports:
      - "6380:6379"

  # 后端 API 程序
  chatgpt-plus-api:
    image: registry.cn-shenzhen.aliyuncs.com/geekmaster/chatgpt-plus-api:版本号
    container_name: chatgpt-plus-api
    restart: always
    depends_on:
      - chatgpt-plus-mysql
      - chatgpt-plus-redis
    environment:
      - DEBUG=false
      - LOG_LEVEL=info
      - CONFIG_FILE=config.toml
    ports:
      - "5678:5678"
      - "9999:9999"
    volumes:
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
      - ./conf/config.toml:/var/www/app/config.toml
      - ./logs:/var/www/app/logs
      - ./static:/var/www/app/static

  # 前端应用
  chatgpt-plus-web:
    image: registry.cn-shenzhen.aliyuncs.com/geekmaster/chatgpt-plus-web:版本号
    container_name: chatgpt-plus-web
    restart: always
    depends_on:
      - chatgpt-plus-api
    ports:
      - "8080:8080"
    volumes:
      - ./logs/nginx:/var/log/nginx
      - ./conf/nginx/conf.d:/etc/nginx/conf.d
      - ./conf/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./ssl:/etc/nginx/ssl

配置好了之后就可以启动容器了

docker-compose up -d

注意,启动容器之后把代码里第十七行的数据库初始化语句映射注释掉- ./mysql/init.d:/docker-entrypoint-initdb.d/,否则每次重启可能丢失数据。

三、登录地址与首次配置

  • 前端访问地址:http://localhost:端口号/chat 使用移动设备访问会自动跳转到移动端页面。
  • 后台管理地址:http://localhost:端口号/admin
  • 移动端地址:http://localhost:端口号/mobile
  • 初始后台管理账号:admin/admin123
  • 初始前端体验账号:18575670125/12345678

服务启动成功之后不能立刻使用,需要先登录管理后台 -> API-KEY 去添加一个 OpenAI 或者文心一言,科大讯飞等至少一个平台的 API KEY。

注意:这里如果要用到openAI转发,在对话的api地址填写时后面需要加上 /v1/chat/completions,在绘画的api地址填写时后面需要加上/v1/images/generations

四、高级配置

如果你想配置一些高级功能,比如 MidJourney 绘画,Stable-Diffusion 绘画等功能,只需修改 conf/config.toml 即可。

参数说明

  1. 如果你不知道如何获取 Discord 用户 Token 和 Bot Token 请查参考 Midjourney 机器人配置
  2. SdConfig.Txt2ImgJsonPath 的默认用的是使用最广泛的 stable-diffusion-webui (opens new window) 项目的 API,如果你用的是其他版本,比如秋叶的懒人包部署的,那么请将对应的 text2img 的参数报文复制放在 res/text2img.json 文件中即可。如果你不知道如何采集绘画参数,请参考 获取 Stable Diffusion 绘画参数
  3. XXLConfig 配置信息获取请参考 XXL-Job环境配置
  4. 支付宝的配置信息获取请参考 支付宝应用创建
  5. MidJourney,Stable-Diffusion AI 绘图,支付宝等功能都需要先把 Enabled 配置成 true 才可以使用。

五、平滑升级

# 更新数据库
执行项目根目录下的`database/update-版本号.sql`SQL文件
# 更新版本
更改docker-compose.yaml文件中的镜像版本。

之后重启服务即可。

六、前端页面及静态二维码等修改

前端页面:

静态资源,可改管理员微信二维码或联系方式等:

之后,重新打包部署即可。

无标签