From 1934aa30f28ca38390e4032f8ac3d8ddb9fe4fff Mon Sep 17 00:00:00 2001 From: infinitycat Date: Wed, 2 Apr 2025 15:24:12 +0800 Subject: [PATCH] =?UTF-8?q?build:=E4=B8=BA=20Docker=20=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20entrypoint=20=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 entrypoint.sh脚本,用于在容器启动时执行初始化操作 - 修改 Dockerfile,使用 entrypoint.sh 作为入口点 - 脚本功能包括: - 创建配置目录 - 复制 bot配置文件 - 复制环境配置文件 --- Dockerfile | 6 +++++- entrypoint.sh | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 entrypoint.sh diff --git a/Dockerfile b/Dockerfile index 6c6041ff3..3addda1c3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,4 +17,8 @@ RUN pip install --upgrade -r requirements.txt COPY . . EXPOSE 8000 -ENTRYPOINT [ "python","bot.py" ] \ No newline at end of file + +RUN chmod +x /MaiMBot/entrypoint.sh +ENTRYPOINT ["/MaiMBot/entrypoint.sh"] + +CMD [ "python","bot.py" ] \ No newline at end of file diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 000000000..f8b5d7782 --- /dev/null +++ b/entrypoint.sh @@ -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 "$@" \ No newline at end of file