注解:因为ntwork类库不支持Linux环境,所以企业微信就放弃了容器部署。
通过dockerfile启动容器:
cd dify-on-wechat/docker # 进入docker目录
docker compose up -d # 启动docker容器
docker logs -f dify-on-wechat # 查看二维码并登录
代码位置:dify-on-wechat/docker/entrypoint.sh。当容器启动时,执行entrypoint.sh脚本:
#!/bin/bash
set -e# build prefix
DIFY_ON_WECHAT_PREFIX=${DIFY_ON_WECHAT_PREFIX:-""}
# path to config.json
DIFY_ON_WECHAT_CONFIG_PATH=${DIFY_ON_WECHAT_CONFIG_PATH:-""}
# execution command line
DIFY_ON_WECHAT_EXEC=${DIFY_ON_WECHAT_EXEC:-""}# use environment variables to pass parameters
# if you have not defined environment variables, set them below
# export OPEN_AI_API_KEY=${OPEN_AI_API_KEY:-'YOUR API KEY'}
# export OPEN_AI_PROXY=${OPEN_AI_PROXY:-""}
# export SINGLE_CHAT_PREFIX=${SINGLE_CHAT_PREFIX:-'["bot", "@bot"]'}
# export SINGLE_CHAT_REPLY_PREFIX=${SINGLE_CHAT_REPLY_PREFIX:-'"[bot] "'}
# export GROUP_CHAT_PREFIX=${GROUP_CHAT_PREFIX:-'["@bot"]'}
# export GROUP_NAME_WHITE_LIST=${GROUP_NAME_WHITE_LIST:-'["ChatGPT测试群", "ChatGPT测试群2"]'}
# export IMAGE_CREATE_PREFIX=${IMAGE_CREATE_PREFIX:-'["画", "看", "找"]'}
# export CONVERSATION_MAX_TOKENS=${CONVERSATION_MAX_TOKENS:-"1000"}
# export SPEECH_RECOGNITION=${SPEECH_RECOGNITION:-"False"}
# export CHARACTER_DESC=${CHARACTER_DESC:-"你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。"}
# export EXPIRES_IN_SECONDS=${EXPIRES_IN_SECONDS:-"3600"}# DIFY_ON_WECHAT_PREFIX is empty, use /app
if [ "$DIFY_ON_WECHAT_PREFIX" == "" ] ; thenDIFY_ON_WECHAT_PREFIX=/app
fi# DIFY_ON_WECHAT_CONFIG_PATH is empty, use '/app/config.json'
if [ "$DIFY_ON_WECHAT_CONFIG_PATH" == "" ] ; thenDIFY_ON_WECHAT_CONFIG_PATH=$DIFY_ON_WECHAT_PREFIX/config.json
fi# DIFY_ON_WECHAT_EXEC is empty, use ‘python app.py’
if [ "$DIFY_ON_WECHAT_EXEC" == "" ] ; thenDIFY_ON_WECHAT_EXEC="python app.py"
fi# modify content in config.json
# if [ "$OPEN_AI_API_KEY" == "YOUR API KEY" ] || [ "$OPEN_AI_API_KEY" == "" ]; then
# echo -e "\033[31m[Warning] You need to set OPEN_AI_API_KEY before running!\033[0m"
# fi# go to prefix dir
cd $DIFY_ON_WECHAT_PREFIX
# excute
$DIFY_ON_WECHAT_EXEC
这段 Bash 脚本主要用于配置和启动一个 Python 应用程序,脚本中使用了多个环境变量来控制不同的配置选项。下面逐一解释每一部分的功能和用途:
1.设置脚本行为
set -e
这一行让脚本在执行过程中如果遇到任何错误立即退出。set -e
是确保脚本在出现任何非零退出状态的命令后立即终止执行,提高脚本的稳定性和可预测性。
2.定义默认环境变量
这部分代码使用了 Bash 的参数展开功能,如果环境变量未设置,则为其提供默认值。例如:
DIFY_ON_WECHAT_PREFIX=${DIFY_ON_WECHAT_PREFIX:-""}
如果 `DIFY_ON_WECHAT_PREFIX 没有被设置,它将默认为一个空字符串。这种模式在脚本中用于多个变量,确保所有重要的配置都有明确的值。
3.条件赋值
if [ "$DIFY_ON_WECHAT_PREFIX" == "" ] ; thenDIFY_ON_WECHAT_PREFIX=/app
fi
这个条件检查 DIFY_ON_WECHAT_PREFIX
是否为空,如果为空,则将其设置为 /app
。这样的条件赋值确保了即使环境变量未被外部明确设置,应用也能有一个合理的默认运行目录。
4.配置文件路径设置
if [ "$DIFY_ON_WECHAT_CONFIG_PATH" == "" ] ; thenDIFY_ON_WECHAT_CONFIG_PATH=$DIFY_ON_WECHAT_PREFIX/config.json
fi
这里设置配置文件的路径,默认位置是在 DIFY_ON_WECHAT_PREFIX
目录下的 config.json
。
5.执行命令设置
if [ "$DIFY_ON_WECHAT_EXEC" == "" ] ; thenDIFY_ON_WECHAT_EXEC="python app.py"
fi
设置启动应用程序的命令,默认为 python app.py
。这允许通过环境变量覆盖执行命令,从而增加灵活性。
6.目录切换与应用执行
cd $DIFY_ON_WECHAT_PREFIX
$DIFY_ON_WECHAT_EXEC
脚本会改变当前目录到 DIFY_ON_WECHAT_PREFIX
指定的目录,然后执行 DIFY_ON_WECHAT_EXEC
指定的命令来启动应用。