build:为 Docker 部署添加 entrypoint 脚本
- 新增 entrypoint.sh脚本,用于在容器启动时执行初始化操作 - 修改 Dockerfile,使用 entrypoint.sh 作为入口点 - 脚本功能包括: - 创建配置目录 - 复制 bot配置文件 - 复制环境配置文件
This commit is contained in:
@@ -17,4 +17,8 @@ RUN pip install --upgrade -r requirements.txt
|
||||
COPY . .
|
||||
|
||||
EXPOSE 8000
|
||||
ENTRYPOINT [ "python","bot.py" ]
|
||||
|
||||
RUN chmod +x /MaiMBot/entrypoint.sh
|
||||
ENTRYPOINT ["/MaiMBot/entrypoint.sh"]
|
||||
|
||||
CMD [ "python","bot.py" ]
|
||||
55
entrypoint.sh
Normal file
55
entrypoint.sh
Normal file
@@ -0,0 +1,55 @@
|
||||
#!/bin/sh
|
||||
set -e # 遇到任何错误立即退出
|
||||
|
||||
# 定义常量
|
||||
TEMPLATE_DIR="./template"
|
||||
CONFIG_DIR="./config"
|
||||
TARGET_ENV_FILE="./.env"
|
||||
|
||||
# 步骤 1: 创建 config 目录
|
||||
if [ ! -d "$CONFIG_DIR" ]; then
|
||||
echo "🛠️ 创建配置目录: $CONFIG_DIR"
|
||||
mkdir -p "$CONFIG_DIR"
|
||||
chmod 755 "$CONFIG_DIR" # 设置目录权限(按需修改)
|
||||
else
|
||||
echo "ℹ️ 配置目录已存在,跳过创建: $CONFIG_DIR"
|
||||
fi
|
||||
|
||||
# 步骤 2: 复制 bot 配置文件
|
||||
BOT_TEMPLATE="$TEMPLATE_DIR/bot_config_template.toml"
|
||||
BOT_CONFIG="$CONFIG_DIR/bot_config.toml"
|
||||
|
||||
if [ -f "$BOT_TEMPLATE" ]; then
|
||||
if [ ! -f "$BOT_CONFIG" ]; then
|
||||
echo "📄 生成 Bot 配置文件: $BOT_CONFIG"
|
||||
cp "$BOT_TEMPLATE" "$BOT_CONFIG"
|
||||
chmod 644 "$BOT_CONFIG" # 设置文件权限(按需修改)
|
||||
else
|
||||
echo "ℹ️ Bot 配置文件已存在,跳过生成: $BOT_CONFIG"
|
||||
fi
|
||||
else
|
||||
echo "❌ 错误:模板文件不存在: $BOT_TEMPLATE" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 3: 复制环境文件
|
||||
ENV_TEMPLATE="$TEMPLATE_DIR/template.env"
|
||||
ENV_TARGET="$TARGET_ENV_FILE"
|
||||
|
||||
if [ -f "$ENV_TEMPLATE" ]; then
|
||||
if [ ! -f "$ENV_TARGET" ]; then
|
||||
echo "🔧 生成环境配置文件: $ENV_TARGET"
|
||||
cp "$ENV_TEMPLATE" "$ENV_TARGET"
|
||||
chmod 600 "$ENV_TARGET" # 敏感文件建议更严格权限
|
||||
else
|
||||
echo "ℹ️ 环境文件已存在,跳过生成: $ENV_TARGET"
|
||||
fi
|
||||
else
|
||||
echo "❌ 错误:模板文件不存在: $ENV_TEMPLATE" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ 所有初始化完成!"
|
||||
|
||||
# 执行 Docker CMD 命令
|
||||
exec "$@"
|
||||
Reference in New Issue
Block a user