Przeglądaj źródła

feat: support docker/container running

limccn 3 lat temu
rodzic
commit
296f3d0d47

+ 28 - 0
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: <https://github.com/zhayujie/chatgpt-on-wechat/wiki/FAQs>

+ 38 - 0
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"]

+ 40 - 0
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"]

+ 3 - 0
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 .

+ 3 - 0
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 .

+ 8 - 0
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

+ 1 - 0
docker/sample-chatgpt-on-wechat/.env

@@ -0,0 +1 @@
+

+ 26 - 0
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)

+ 1 - 0
docker/sample-chatgpt-on-wechat/Name

@@ -0,0 +1 @@
+zhayujie/chatgpt-on-wechat:1.0.0-alpine