docker: use environment args to set parameters

This commit is contained in:
lanvent
2023-03-26 03:31:29 +08:00
parent e226c93eeb
commit 46a6223a43
5 changed files with 23 additions and 63 deletions

View File

@@ -4,7 +4,7 @@ import json
import os import os
from common.log import logger from common.log import logger
# 将所有可用的配置项写在字典里 # 将所有可用的配置项写在字典里, 请使用小写字母
available_setting ={ available_setting ={
#openai api配置 #openai api配置
"open_ai_api_key": "", # openai api key "open_ai_api_key": "", # openai api key
@@ -106,9 +106,13 @@ def load_config():
# override config with environment variables. # override config with environment variables.
# Some online deployment platforms (e.g. Railway) deploy project from github directly. So you shouldn't put your secrets like api key in a config file, instead use environment variables to override the default config. # Some online deployment platforms (e.g. Railway) deploy project from github directly. So you shouldn't put your secrets like api key in a config file, instead use environment variables to override the default config.
for name, value in os.environ.items(): for name, value in os.environ.items():
name = name.lower()
if name in available_setting: if name in available_setting:
logger.info("[INIT] override config by environ args: {}={}".format(name, value)) logger.info("[INIT] override config by environ args: {}={}".format(name, value))
config[name] = value try:
config[name] = eval(value)
except:
config[name] = value
logger.info("[INIT] load config: {}".format(config)) logger.info("[INIT] load config: {}".format(config))

View File

@@ -28,7 +28,7 @@ ADD ./entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh \ RUN chmod +x /entrypoint.sh \
&& adduser -D -h /home/noroot -u 1000 -s /bin/bash noroot \ && adduser -D -h /home/noroot -u 1000 -s /bin/bash noroot \
&& chown noroot:noroot ${BUILD_PREFIX} && chown -R noroot:noroot ${BUILD_PREFIX}
USER noroot USER noroot

View File

@@ -4,5 +4,5 @@
tar -zcf chatgpt-on-wechat.tar.gz --exclude=../../chatgpt-on-wechat/docker ../../chatgpt-on-wechat tar -zcf chatgpt-on-wechat.tar.gz --exclude=../../chatgpt-on-wechat/docker ../../chatgpt-on-wechat
# build image # build image
docker build -f Dockerfile.alpine \ docker build -f Dockerfile.latest \
-t zhayujie/chatgpt-on-wechat . -t zhayujie/chatgpt-on-wechat .

View File

@@ -15,6 +15,6 @@ services:
GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]' GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]'
IMAGE_CREATE_PREFIX: '["画", "看", "找"]' IMAGE_CREATE_PREFIX: '["画", "看", "找"]'
CONVERSATION_MAX_TOKENS: 1000 CONVERSATION_MAX_TOKENS: 1000
SPEECH_RECOGNITION: 'false' SPEECH_RECOGNITION: "False"
CHARACTER_DESC: '你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。' CHARACTER_DESC: '你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。'
EXPIRES_IN_SECONDS: 3600 EXPIRES_IN_SECONDS: 3600

View File

@@ -8,17 +8,19 @@ CHATGPT_ON_WECHAT_CONFIG_PATH=${CHATGPT_ON_WECHAT_CONFIG_PATH:-""}
# execution command line # execution command line
CHATGPT_ON_WECHAT_EXEC=${CHATGPT_ON_WECHAT_EXEC:-""} CHATGPT_ON_WECHAT_EXEC=${CHATGPT_ON_WECHAT_EXEC:-""}
OPEN_AI_API_KEY=${OPEN_AI_API_KEY:-""} # use environment variables to pass parameters
OPEN_AI_PROXY=${OPEN_AI_PROXY:-""} # if you have not defined environment variables, set them bwlow
SINGLE_CHAT_PREFIX=${SINGLE_CHAT_PREFIX:-""} export OPEN_AI_API_KEY=${OPEN_AI_API_KEY:-'YOUR API KEY'}
SINGLE_CHAT_REPLY_PREFIX=${SINGLE_CHAT_REPLY_PREFIX:-""} export OPEN_AI_PROXY=${OPEN_AI_PROXY:-""}
GROUP_CHAT_PREFIX=${GROUP_CHAT_PREFIX:-""} export SINGLE_CHAT_PREFIX=${SINGLE_CHAT_PREFIX:-'["bot", "@bot"]'}
GROUP_NAME_WHITE_LIST=${GROUP_NAME_WHITE_LIST:-""} export SINGLE_CHAT_REPLY_PREFIX=${SINGLE_CHAT_REPLY_PREFIX:-'"[bot] "'}
IMAGE_CREATE_PREFIX=${IMAGE_CREATE_PREFIX:-""} export GROUP_CHAT_PREFIX=${GROUP_CHAT_PREFIX:-'["@bot"]'}
CONVERSATION_MAX_TOKENS=${CONVERSATION_MAX_TOKENS:-""} export GROUP_NAME_WHITE_LIST=${GROUP_NAME_WHITE_LIST:-'["ChatGPT测试群", "ChatGPT测试群2"]'}
SPEECH_RECOGNITION=${SPEECH_RECOGNITION:-""} export IMAGE_CREATE_PREFIX=${IMAGE_CREATE_PREFIX:-'["画", "看", "找"]'}
CHARACTER_DESC=${CHARACTER_DESC:-""} export CONVERSATION_MAX_TOKENS=${CONVERSATION_MAX_TOKENS:-"1000"}
EXPIRES_IN_SECONDS=${EXPIRES_IN_SECONDS:-""} export SPEECH_RECOGNITION=${SPEECH_RECOGNITION:-"False"}
export CHARACTER_DESC=${CHARACTER_DESC:-"你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。"}
export EXPIRES_IN_SECONDS=${EXPIRES_IN_SECONDS:-"3600"}
# CHATGPT_ON_WECHAT_PREFIX is empty, use /app # CHATGPT_ON_WECHAT_PREFIX is empty, use /app
if [ "$CHATGPT_ON_WECHAT_PREFIX" == "" ] ; then if [ "$CHATGPT_ON_WECHAT_PREFIX" == "" ] ; then
@@ -36,56 +38,10 @@ if [ "$CHATGPT_ON_WECHAT_EXEC" == "" ] ; then
fi fi
# modify content in config.json # modify content in config.json
if [ "$OPEN_AI_API_KEY" != "" ] ; then if [ "$OPEN_AI_API_KEY" == "YOUR API KEY" ] ; then
sed -i "s/\"open_ai_api_key\".*,$/\"open_ai_api_key\": \"$OPEN_AI_API_KEY\",/" $CHATGPT_ON_WECHAT_CONFIG_PATH
else
echo -e "\033[31m[Warning] You need to set OPEN_AI_API_KEY before running!\033[0m" echo -e "\033[31m[Warning] You need to set OPEN_AI_API_KEY before running!\033[0m"
fi fi
# use http_proxy as default
if [ "$HTTP_PROXY" != "" ] ; then
sed -i "s/\"proxy\".*,$/\"proxy\": \"$HTTP_PROXY\",/" $CHATGPT_ON_WECHAT_CONFIG_PATH
fi
if [ "$OPEN_AI_PROXY" != "" ] ; then
sed -i "s/\"proxy\".*,$/\"proxy\": \"$OPEN_AI_PROXY\",/" $CHATGPT_ON_WECHAT_CONFIG_PATH
fi
if [ "$SINGLE_CHAT_PREFIX" != "" ] ; then
sed -i "s/\"single_chat_prefix\".*,$/\"single_chat_prefix\": $SINGLE_CHAT_PREFIX,/" $CHATGPT_ON_WECHAT_CONFIG_PATH
fi
if [ "$SINGLE_CHAT_REPLY_PREFIX" != "" ] ; then
sed -i "s/\"single_chat_reply_prefix\".*,$/\"single_chat_reply_prefix\": $SINGLE_CHAT_REPLY_PREFIX,/" $CHATGPT_ON_WECHAT_CONFIG_PATH
fi
if [ "$GROUP_CHAT_PREFIX" != "" ] ; then
sed -i "s/\"group_chat_prefix\".*,$/\"group_chat_prefix\": $GROUP_CHAT_PREFIX,/" $CHATGPT_ON_WECHAT_CONFIG_PATH
fi
if [ "$GROUP_NAME_WHITE_LIST" != "" ] ; then
sed -i "s/\"group_name_white_list\".*,$/\"group_name_white_list\": $GROUP_NAME_WHITE_LIST,/" $CHATGPT_ON_WECHAT_CONFIG_PATH
fi
if [ "$IMAGE_CREATE_PREFIX" != "" ] ; then
sed -i "s/\"image_create_prefix\".*,$/\"image_create_prefix\": $IMAGE_CREATE_PREFIX,/" $CHATGPT_ON_WECHAT_CONFIG_PATH
fi
if [ "$CONVERSATION_MAX_TOKENS" != "" ] ; then
sed -i "s/\"conversation_max_tokens\".*,$/\"conversation_max_tokens\": $CONVERSATION_MAX_TOKENS,/" $CHATGPT_ON_WECHAT_CONFIG_PATH
fi
if [ "$SPEECH_RECOGNITION" != "" ] ; then
sed -i "s/\"speech_recognition\".*,$/\"speech_recognition\": $SPEECH_RECOGNITION,/" $CHATGPT_ON_WECHAT_CONFIG_PATH
fi
if [ "$CHARACTER_DESC" != "" ] ; then
sed -i "s/\"character_desc\".*,$/\"character_desc\": \"$CHARACTER_DESC\",/" $CHATGPT_ON_WECHAT_CONFIG_PATH
fi
if [ "$EXPIRES_IN_SECONDS" != "" ] ; then
sed -i "s/\"expires_in_seconds\".*$/\"expires_in_seconds\": $EXPIRES_IN_SECONDS,/" $CHATGPT_ON_WECHAT_CONFIG_PATH
fi
# go to prefix dir # go to prefix dir
cd $CHATGPT_ON_WECHAT_PREFIX cd $CHATGPT_ON_WECHAT_PREFIX