Skip to content

Docker部署

limccn edited this page Mar 7, 2023 · 3 revisions

使用Docker部署

快速开始

启动容器运行,执行以下命令:

docker-compose up                  

# 本地构建容器Image
chmod +x build.alpine.sh           # 构建脚本添加执行权限
./build.alpine.sh                  # 构建容器,基于alpine
# 启动容器
docker run -it --name sample-chatgpt-on-wechat --env OPEN_AI_API_KEY=sk-YourOpenApiKey zhayujie/chatgpt-on-wechat       

使用环境变量和运行时配置修改

  1. 直接在Shell中使用--env参数覆盖环境变量,实现修改运行参数,参考命令:
docker run -it --name sample-chatgpt-on-wechat --env OPEN_AI_API_KEY=sk-YourOpenApiKey --env CONVERSATION_MAX_TOKENS=1000 zhayujie/chatgpt-on-wechat        
  1. 或者,使用--env-file=配合env文件覆盖环境变量,实现修改运行参数,参考命令:
docker run -it --name sample-chatgpt-on-wechat --env-file=.env zhayujie/chatgpt-on-wechat     
  1. 或者,使用-v替换容器中的config.json,实现修改运行参数,参考命令:
docker run -it --name sample-chatgpt-on-wechat -v YOUR_PATH_TO_CONFIG:/app/config.json zhayujie/chatgpt-on-wechat        
  1. 可用环境变量,可以参考示例.env文件
OPEN_AI_API_KEY=YOUR API KEY
OPEN_AI_PROXY=
SINGLE_CHAT_PREFIX=["bot", "@bot"]
SINGLE_CHAT_REPLY_PREFIX="[bot] "
GROUP_CHAT_PREFIX=["@bot"]
GROUP_NAME_WHITE_LIST=["ChatGPT测试群", "ChatGPT测试群2"]
IMAGE_CREATE_PREFIX=["", "", ""]
CONVERSATION_MAX_TOKENS=1000
CHARACTER_DESC=你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。
EXPIRES_IN_SECONDS=3600

开始构建Docker Image

使用docker build构建

  1. 构建Image,执行以下命令:
chmod +x build.alpine.sh           # 构建脚本添加执行权限
./build.alpine.sh                  # 构建容器,基于alpine
  1. 构建Image完成后启动容器,执行以下命令:
docker run -it --name sample-chatgpt-on-wechat zhayujie/chatgpt-on-wechat        
  1. DockerFile源文件

Dockerfile.debian, Dockerfile.alpine

使用docker-compose构建

  1. 构建Image并启动, 执行以下命令:
docker-compose up --build                
  1. 示例docker-compose.yaml文件内容
version: '2.0'
services:
  chatgpt-on-wechat:
    build:
      context: ./
      dockerfile: Dockerfile.alpine
    image: zhayujie/chatgpt-on-wechat
    container_name: sample-chatgpt-on-wechat
    environment:
      OPEN_AI_API_KEY: 'YOUR API KEY'
      OPEN_AI_PROXY: ''
      SINGLE_CHAT_PREFIX: '["bot", "@bot"]'
      SINGLE_CHAT_REPLY_PREFIX: '"[bot] "'
      GROUP_CHAT_PREFIX: '["@bot"]'
      GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]'
      IMAGE_CREATE_PREFIX: '["画", "看", "找"]'
      CONVERSATION_MAX_TOKENS: 1000
      CHARACTER_DESC: '你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。'
      EXPIRES_IN_SECONDS: 3600

其他构建用法

  1. 使用构建参数--build-arg设置CHATGPT_ON_WECHAT_VER构建参数,可以指定chatgpt-on-wechat的Tag版本。
# 指定使用1.0.2发布的tag
CHATGPT_ON_WECHAT_TAG=1.0.4

# 或者从github获取最新的tag
CHATGPT_ON_WECHAT_TAG=`curl -sL "https://api.github.com/repos/zhayujie/chatgpt-on-wechat/releases/latest" | \
     grep '"tag_name":' | \
     sed -E 's/.*"([^"]+)".*/\1/'`

# 构建debian版本
docker build -f Dockerfile.debian \
             --build-arg CHATGPT_ON_WECHAT_VER=$CHATGPT_ON_WECHAT_TAG \
             -t zhayujie/chatgpt-on-wechat:$CHATGPT_ON_WECHAT_TAG-debian .
# 更改tag
docker tag zhayujie/chatgpt-on-wechat:$CHATGPT_ON_WECHAT_TAG-debian \ 
           zhayujie/chatgpt-on-wechat
  1. 修改 Dockerfile.alpineDockerfile.debian 文件里第9行中 API_KEY 的配置,可以在构建时直接将API_KEY构建进Image。
BUILD_OPEN_AI_API_KEY='YOUR OPEN AI KEY HERE'               

其他便利工具

我们在 docker/sample-chatgpt-on-wechat 下提供了 Makefile 脚本,方便进入容器:

cd sample-chatgpt-on-wechat          # 进入sample-chatgpt-on-wechat目录
make run_i                           # 使用交互式方式启动容器

命令格式为:

make [echo|stop|rm|run_d|run_i]
# make echo       #回显容器名称
# make stop       #停止容器 
# make rm         #删除容器 
# make run_d      #使用守护式方式启动容器
# make run_i      #使用交互式方式启动容器