fix(docker): 增强配置生成脚本的调试和错误处理能力

- 在 generate-config.sh 中添加详细的调试日志输出
- 添加目标目录存在性检查和自动创建
- 显示所有 VITE_* 环境变量用于调试
- 验证配置文件生成结果并输出预览
- 修复字符串拼接问题,避免 \n 显示异常
- 在 start-services.sh 中添加脚本可执行性检查
- 添加 config.js 生成验证和手动重试机制
- 改进错误提示和日志输出格式

关联: #186
This commit is contained in:
linshen
2025-10-12 23:07:35 +08:00
parent 89adcce72f
commit 0d1ae2010f
2 changed files with 50 additions and 4 deletions

View File

@@ -3,12 +3,27 @@
# 配置文件路径
CONFIG_FILE="/usr/share/nginx/html/config.js"
echo "========================================="
echo "开始生成运行时配置文件..."
echo "目标文件: $CONFIG_FILE"
echo "========================================="
# 检查目标目录是否存在
TARGET_DIR=$(dirname "$CONFIG_FILE")
if [ ! -d "$TARGET_DIR" ]; then
echo "ERROR: 目标目录不存在: $TARGET_DIR"
mkdir -p "$TARGET_DIR" || echo "ERROR: 无法创建目录"
fi
# 构建包含全部 VITE_* 变量的运行时配置(同时注入带前缀与不带前缀的键)
CONFIG_BODY=""
COUNT=0
# 显示所有VITE_*环境变量用于调试
echo "扫描VITE_*环境变量..."
env | grep '^VITE_' || echo "未找到任何VITE_*变量"
echo "========================================="
# 遍历所有以 VITE_ 开头的环境变量
for var in $(env | grep '^VITE_[A-Za-z0-9_]*=' | cut -d= -f1 | sort); do
value=$(printenv "$var" 2>/dev/null)
@@ -20,9 +35,11 @@ for var in $(env | grep '^VITE_[A-Za-z0-9_]*=' | cut -d= -f1 | sort); do
# 追加属性:无前缀副本 与 带前缀副本
if [ -n "$CONFIG_BODY" ]; then
CONFIG_BODY="$CONFIG_BODY,\n"
CONFIG_BODY="${CONFIG_BODY},
"
fi
CONFIG_BODY="$CONFIG_BODY $no_prefix_key: \"$escaped_value\",\n $var: \"$escaped_value\""
CONFIG_BODY="${CONFIG_BODY} ${no_prefix_key}: \"${escaped_value}\",
${var}: \"${escaped_value}\""
COUNT=$((COUNT + 1))
echo "Found VITE var: $var"
@@ -39,5 +56,20 @@ ${CONFIG_BODY}
console.log("运行时配置已加载,共注入 ${COUNT} 个 VITE_* 变量(双份键)");
EOF
echo "========================================="
echo "配置文件已生成: $CONFIG_FILE"
echo "已注入 VITE_* 变量数量: $COUNT"
echo "========================================="
# 验证文件是否成功生成
if [ -f "$CONFIG_FILE" ]; then
echo "✅ 配置文件生成成功"
echo "文件大小: $(wc -c < "$CONFIG_FILE") bytes"
echo "前10行内容:"
head -n 10 "$CONFIG_FILE"
else
echo "❌ ERROR: 配置文件生成失败!"
exit 1
fi
echo "========================================="

View File

@@ -12,12 +12,26 @@ echo "Nginx configuration updated with NGINX_PORT=${NGINX_PORT}"
# 运行原有的nginx初始化脚本
echo "Running nginx initialization scripts..."
for script in /docker-entrypoint.d/*.sh; do
if [ -f "$script" ]; then
if [ -f "$script" ] && [ -x "$script" ]; then
echo "Running $script"
sh "$script"
sh "$script" || echo "WARNING: $script failed with exit code $?"
elif [ -f "$script" ]; then
echo "WARNING: $script is not executable, attempting to run anyway..."
sh "$script" || echo "WARNING: $script failed with exit code $?"
fi
done
# 验证config.js是否已生成
if [ -f "/usr/share/nginx/html/config.js" ]; then
echo "✅ config.js generated successfully"
echo "Content preview:"
head -n 5 /usr/share/nginx/html/config.js
else
echo "❌ ERROR: config.js was not generated!"
echo "Attempting manual generation..."
sh /docker-entrypoint.d/40-generate-config.sh || echo "Manual generation failed"
fi
echo "Starting services with supervisor..."
echo "MCP Server will run on port: ${MCP_HTTP_PORT}"
echo "MCP Server log level: ${MCP_LOG_LEVEL}"