diff --git a/README.md b/README.md index d96ba83..2a6da6a 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,34 @@ nohup python3 app.py & tail -f nohup.out # 在后台运行程序并通 > **特殊指令:** 用户向机器人发送 **#清除记忆** 即可清空该用户的上下文记忆。 + +3.如果是在docker **容器运行**,可以在`根\docker`目录下: + +首先,修改Dockerfile.alpine文件里第9行,关于openapi key的配置 +```bash +BUILD_OPEN_AI_API_KEY='YOUR OPEN AI KEY HERE' +``` +然后,使用docker-compose启动容器运行: +```bash +docker-compose up +``` + +如果您的环境里没有安装docker-compose,可以使用docker build方式构建Image,使用以下命令: +```bash +chmod +x build.alpine.sh #构建脚本添加执行权限 +./build.alpine.sh #构建容器,基于alpine +``` +然后,通过已构建完成的Image启动容器,使用以下命令: +```bash +docker run -it --name sample-chatgpt-on-wechat zhayujie/chatgpt-on-wechat:1.0.0-alpine +``` + +同时,我们在`根\docker\sample-chatgpt-on-wechat`下提供了Makefile脚本,方便使用 +```bash +cd sample-chatgpt-on-wechat #进入sample-chatgpt-on-wechat目录 +make run_i #使用交互式方式启动容器 +``` + ## 常见问题 FAQs: diff --git a/docker/Dockerfile.alpine b/docker/Dockerfile.alpine new file mode 100644 index 0000000..5d30df5 --- /dev/null +++ b/docker/Dockerfile.alpine @@ -0,0 +1,38 @@ +FROM python:3.7.9-alpine + +LABEL maintainer="foo@bar.com" +ARG TZ='Asia/Shanghai' + +ARG CHATGPT_ON_WECHAT_VER=1.0.0 + +ENV BUILD_PREFIX=/app \ + BUILD_OPEN_AI_API_KEY='YOUR OPEN AI KEY HERE' + +RUN apk add --no-cache \ + curl \ + wget \ + openssh + +RUN wget -t 3 -T 30 -nv -O chatgpt-on-wechat-${CHATGPT_ON_WECHAT_VER}.tar.gz \ + https://github.com/zhayujie/chatgpt-on-wechat/archive/refs/tags/${CHATGPT_ON_WECHAT_VER}.tar.gz \ + && tar -xzf chatgpt-on-wechat-${CHATGPT_ON_WECHAT_VER}.tar.gz \ + && mv chatgpt-on-wechat-${CHATGPT_ON_WECHAT_VER} ${BUILD_PREFIX} \ + && rm chatgpt-on-wechat-${CHATGPT_ON_WECHAT_VER}.tar.gz + +WORKDIR ${BUILD_PREFIX} + +RUN cd ${BUILD_PREFIX} \ + && cp config-template.json ${BUILD_PREFIX}/config.json \ + && sed -i "2s/YOUR API KEY/${BUILD_OPEN_AI_API_KEY}/" ${BUILD_PREFIX}/config.json \ + && cat ${BUILD_PREFIX}/config.json + +RUN /usr/local/bin/python -m pip install --upgrade pip \ + && pip install itchat-uos==1.5.0.dev0 \ + && pip install --upgrade openai + +RUN adduser -D -h /home/noroot -u 1000 -s /bin/bash noroot \ + && chown noroot:noroot ${BUILD_PREFIX} + +USER noroot + +CMD ["python","app.py"] diff --git a/docker/Dockerfile.debian b/docker/Dockerfile.debian new file mode 100644 index 0000000..b68f5b9 --- /dev/null +++ b/docker/Dockerfile.debian @@ -0,0 +1,40 @@ +FROM python:3.7.9 + +LABEL maintainer="foo@bar.com" +ARG TZ='Asia/Shanghai' + +ARG CHATGPT_ON_WECHAT_VER=1.0.0 + +ENV BUILD_PREFIX=/app \ + BUILD_OPEN_AI_API_KEY='YOUR OPEN AI KEY HERE' + +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + wget \ + curl && \ + rm -rf /var/lib/apt/lists/* + +RUN wget -t 3 -T 30 -nv -O chatgpt-on-wechat-${CHATGPT_ON_WECHAT_VER}.tar.gz \ + https://github.com/zhayujie/chatgpt-on-wechat/archive/refs/tags/${CHATGPT_ON_WECHAT_VER}.tar.gz \ + && tar -xzf chatgpt-on-wechat-${CHATGPT_ON_WECHAT_VER}.tar.gz \ + && mv chatgpt-on-wechat-${CHATGPT_ON_WECHAT_VER} ${BUILD_PREFIX} \ + && rm chatgpt-on-wechat-${CHATGPT_ON_WECHAT_VER}.tar.gz + +WORKDIR ${BUILD_PREFIX} + +RUN cd ${BUILD_PREFIX} \ + && cp config-template.json ${BUILD_PREFIX}/config.json \ + && sed -i "2s/YOUR API KEY/${BUILD_OPEN_AI_API_KEY}/" ${BUILD_PREFIX}/config.json \ + && cat ${BUILD_PREFIX}/config.json + +RUN /usr/local/bin/python -m pip install --upgrade pip \ + && pip install itchat-uos==1.5.0.dev0 \ + && pip install --upgrade openai + +RUN groupadd -r noroot \ + && useradd -r -g noroot noroot \ + && chown -R noroot:noroot ${BUILD_PREFIX} + +USER noroot + +CMD ["python","app.py"] diff --git a/docker/build.alpine.sh b/docker/build.alpine.sh new file mode 100644 index 0000000..d29503b --- /dev/null +++ b/docker/build.alpine.sh @@ -0,0 +1,3 @@ +docker build -f Dockerfile.alpine \ + --build-arg CHATGPT_ON_WECHAT_VER=1.0.0\ + -t zhayujie/chatgpt-on-wechat:1.0.0-alpine . \ No newline at end of file diff --git a/docker/build.debian.sh b/docker/build.debian.sh new file mode 100644 index 0000000..732aaf7 --- /dev/null +++ b/docker/build.debian.sh @@ -0,0 +1,3 @@ +docker build -f Dockerfile.debian \ + --build-arg CHATGPT_ON_WECHAT_VER=1.0.0\ + -t zhayujie/chatgpt-on-wechat:1.0.0-debian . \ No newline at end of file diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml new file mode 100644 index 0000000..7146e1e --- /dev/null +++ b/docker/docker-compose.yaml @@ -0,0 +1,8 @@ +version: '2.0' +services: + chatgpt-on-wechat: + build: + context: ./ + dockerfile: Dockerfile.alpine + image: zhayujie/chatgpt-on-wechat:1.0.0-alpine + container_name: sample-chatgpt-on-wechat \ No newline at end of file diff --git a/docker/sample-chatgpt-on-wechat/.env b/docker/sample-chatgpt-on-wechat/.env new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/docker/sample-chatgpt-on-wechat/.env @@ -0,0 +1 @@ + diff --git a/docker/sample-chatgpt-on-wechat/Makefile b/docker/sample-chatgpt-on-wechat/Makefile new file mode 100644 index 0000000..6931e0d --- /dev/null +++ b/docker/sample-chatgpt-on-wechat/Makefile @@ -0,0 +1,26 @@ +IMG:=`cat Name` +MOUNT:=-v `pwd`/config.json:/app/config.json +PORT_MAP:= +DOTENV:=.env +CONTAINER_NAME:=sample-chatgpt-on-wechat + +echo: + echo $(IMG) + +run_d: + docker rm $(CONTAINER_NAME) || echo + docker run -dt --name $(CONTAINER_NAME) $(PORT_MAP) \ + --env-file=$(DOTENV) \ + $(MOUNT) $(IMG) + +run_i: + docker rm $(CONTAINER_NAME) || echo + docker run -it --name $(CONTAINER_NAME) $(PORT_MAP) \ + --env-file=$(DOTENV) \ + $(MOUNT) $(IMG) + +stop: + docker stop $(CONTAINER_NAME) + +rm: stop + docker rm $(CONTAINER_NAME) diff --git a/docker/sample-chatgpt-on-wechat/Name b/docker/sample-chatgpt-on-wechat/Name new file mode 100644 index 0000000..3124be0 --- /dev/null +++ b/docker/sample-chatgpt-on-wechat/Name @@ -0,0 +1 @@ +zhayujie/chatgpt-on-wechat:1.0.0-alpine