1.Docker支持部署最新版本; 2.优化构建速度,无须再次下载包;master
@@ -1,4 +1,5 @@ | |||||
from datetime import datetime, timedelta | |||||
import time | |||||
class ExpiredDict(dict): | class ExpiredDict(dict): | ||||
def __init__(self, expires_in_seconds): | def __init__(self, expires_in_seconds): | ||||
@@ -7,7 +8,8 @@ class ExpiredDict(dict): | |||||
def __getitem__(self, key): | def __getitem__(self, key): | ||||
value, expiry_time = super().__getitem__(key) | value, expiry_time = super().__getitem__(key) | ||||
if datetime.now() > expiry_time: | |||||
# 如果元素已过期,则从字典中删除该元素并抛出 KeyError 异常 | |||||
if time.monotonic() > expiry_time: | |||||
del self[key] | del self[key] | ||||
raise KeyError("expired {}".format(key)) | raise KeyError("expired {}".format(key)) | ||||
self.__setitem__(key, value) | self.__setitem__(key, value) | ||||
@@ -38,4 +40,4 @@ class ExpiredDict(dict): | |||||
return [(key, self[key]) for key in self.keys()] | return [(key, self[key]) for key in self.keys()] | ||||
def __iter__(self): | def __iter__(self): | ||||
return self.keys().__iter__() | |||||
return self.keys().__iter__() |
@@ -0,0 +1,35 @@ | |||||
FROM python:3.7.9-alpine | |||||
LABEL maintainer="foo@bar.com" | |||||
ARG TZ='Asia/Shanghai' | |||||
ARG CHATGPT_ON_WECHAT_VER | |||||
ENV BUILD_PREFIX=/app \ | |||||
BUILD_OPEN_AI_API_KEY='YOUR OPEN AI KEY HERE' | |||||
COPY chatgpt-on-wechat.tar.gz ./chatgpt-on-wechat.tar.gz | |||||
RUN apk add --no-cache \ | |||||
bash \ | |||||
&& tar -xf chatgpt-on-wechat.tar.gz \ | |||||
&& mv chatgpt-on-wechat ${BUILD_PREFIX} \ | |||||
&& 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 \ | |||||
&& /usr/local/bin/python -m pip install --no-cache --upgrade pip \ | |||||
&& pip install --no-cache \ | |||||
itchat-uos==1.5.0.dev0 \ | |||||
openai | |||||
WORKDIR ${BUILD_PREFIX} | |||||
ADD ./entrypoint.sh /entrypoint.sh | |||||
RUN chmod +x /entrypoint.sh \ | |||||
&& adduser -D -h /home/noroot -u 1000 -s /bin/bash noroot \ | |||||
&& chown noroot:noroot ${BUILD_PREFIX} | |||||
USER noroot | |||||
ENTRYPOINT ["/entrypoint.sh"] |
@@ -0,0 +1,8 @@ | |||||
#!/bin/bash | |||||
# move chatgpt-on-wechat | |||||
tar -zcf chatgpt-on-wechat.tar.gz --exclude=../../chatgpt-on-wechat/docker ../../chatgpt-on-wechat | |||||
# build image | |||||
docker build -f Dockerfile.alpine \ | |||||
-t zhayujie/chatgpt-on-wechat . |