11#! /bin/bash
22
33# WebQA Agent Docker 启动脚本
4+ # 支持本地和远程部署模式
45
56set -e
67
8+ REPO_BASE_URL=" https://raw.githubusercontent.com/MigoXLab/webqa-agent"
9+ BRANCH=" ${WEBQA_BRANCH:- main} "
10+
711echo " 🚀 启动 WebQA Agent Docker 容器..."
812
9- # 检查配置文件是否存在(优先检查统一配置文件)
10- if [ -f " config/config.yaml" ]; then
11- echo " ✅ 找到统一配置文件: config/config.yaml"
13+ # 创建必要目录
14+ mkdir -p config logs reports
15+
16+ # 检查配置文件是否存在
17+ if [ ! -f " config.yaml" ] && [ ! -f " config/config.yaml" ]; then
18+ echo " ❌ 配置文件不存在"
19+ echo " 请先下载配置文件模板:"
20+ if [ " $BRANCH " = " main" ]; then
21+ echo " curl -fsSL https://raw.githubusercontent.com/MigoXLab/webqa-agent/main/config/config.yaml.example -o config.yaml"
22+ else
23+ echo " curl -fsSL https://raw.githubusercontent.com/MigoXLab/webqa-agent/$BRANCH /config/config.yaml.example -o config.yaml"
24+ fi
25+ exit 1
26+ fi
27+
28+ # 下载 docker-compose.yml(如果不存在)
29+ if [ ! -f " docker-compose.yml" ]; then
30+ echo " 📥 下载 docker-compose.yml..."
31+ curl -fsSL " $REPO_BASE_URL /$BRANCH /docker-compose.yml" -o docker-compose.yml || {
32+ echo " ❌ 下载 docker-compose.yml 失败"
33+ exit 1
34+ }
35+ fi
36+
37+ # 确定配置文件路径
38+ if [ -f " config.yaml" ]; then
39+ CONFIG_FILE=" config.yaml"
40+ echo " ✅ 找到配置文件: config.yaml"
41+ elif [ -f " config/config.yaml" ]; then
42+ CONFIG_FILE=" config/config.yaml"
43+ echo " ✅ 找到配置文件: config/config.yaml"
1244else
1345 echo " ❌ 错误: 配置文件不存在"
14- echo " 请参考 README.md 创建配置文件:config/config.yaml"
1546 exit 1
1647fi
1748
1849# 简化配置验证
1950echo " 🔍 验证配置文件..."
2051
21- # 检查 YAML 语法(优先使用 yq,其次使用 Python+PyYAML,如均不可用则跳过)
52+ # 检查 YAML 语法(优先使用 yq,其次使用 Python+PyYAML)
53+ YAML_STATUS=0
2254if command -v yq > /dev/null 2>&1 ; then
23- yq eval ' .' config/config.yaml > /dev/null 2>&1
24- YAML_STATUS=$?
55+ if ! yq eval ' .' " $CONFIG_FILE " > /dev/null 2>&1 ; then
56+ echo " ❌ 配置文件YAML语法错误 (yq检查)"
57+ YAML_STATUS=1
58+ fi
59+ elif python3 -c " import yaml" > /dev/null 2>&1 ; then
60+ if ! python3 -c " import yaml; yaml.safe_load(open('$CONFIG_FILE '))" > /dev/null 2>&1 ; then
61+ echo " ❌ 配置文件YAML语法错误 (PyYAML检查)"
62+ YAML_STATUS=1
63+ fi
2564else
26- python3 - << 'PY '
27- import sys, importlib.util, pathlib
28- spec = importlib.util.find_spec('yaml')
29- if spec is None:
30- sys.exit(0) # 未安装 PyYAML,跳过检查
31- import yaml
32- try:
33- yaml.safe_load(open('config/config.yaml'))
34- except Exception:
35- sys.exit(1)
36- PY
37- YAML_STATUS=$?
65+ echo " ⚠️ 跳过YAML语法检查 (未安装yq或PyYAML)"
3866fi
3967
4068if [ $YAML_STATUS -ne 0 ]; then
41- echo " ❌ 配置文件YAML语法错误"
4269 exit 1
4370fi
4471
4572# 基本字段检查
46- if ! grep -q " url:" config/config.yaml ; then
73+ if ! grep -q " url:" " $CONFIG_FILE " ; then
4774 echo " ❌ 未找到 target.url 配置"
4875 exit 1
4976fi
5077
51- if ! grep -q " llm_config:" config/config.yaml ; then
78+ if ! grep -q " llm_config:" " $CONFIG_FILE " ; then
5279 echo " ❌ 未找到 llm_config 配置"
5380 exit 1
5481fi
5582
56- if ! grep -q " test_config:" config/config.yaml ; then
83+ if ! grep -q " test_config:" " $CONFIG_FILE " ; then
5784 echo " ❌ 未找到 test_config 配置"
5885 exit 1
5986fi
6087
6188# 检查是否有启用的测试 (支持 True/true)
62- if ! grep -i " enabled: *true" config/config.yaml ; then
89+ if ! grep -i " enabled: *true" " $CONFIG_FILE " ; then
6390 echo " ❌ 所有测试都已禁用,请至少启用一个测试项"
6491 exit 1
6592fi
6693
6794# 检查环境变量或配置文件中的API Key
68- if [ -z " $OPENAI_API_KEY " ] && ! grep -q " api_key:" config/config.yaml ; then
95+ if [ -z " $OPENAI_API_KEY " ] && ! grep -q " api_key:" " $CONFIG_FILE " ; then
6996 echo " ❌ LLM API Key 未配置 (需要环境变量 OPENAI_API_KEY 或配置文件中的 llm_config.api_key)"
7097 exit 1
7198fi
@@ -76,29 +103,8 @@ echo "✅ 基本配置检查通过"
76103mkdir -p logs reports
77104
78105# 启动容器
79- case " $1 " in
80- " --build" |" -b" )
81- echo " 📦 重新构建并启动容器..."
82- docker-compose up --build
83- ;;
84- " --local" |" -l" )
85- echo " 🚀 使用本地镜像启动容器..."
86- docker-compose up
87- ;;
88- " " )
89- echo " 🚀 智能启动容器..."
90- echo " 💡 提示: --build 重新构建 | --local 使用本地镜像"
91- docker-compose up
92- ;;
93- * )
94- echo " ❌ 无效参数: $1 "
95- echo " 用法: ./start.sh [--build|--local]"
96- echo " --build, -b 重新构建并启动"
97- echo " --local, -l 使用本地镜像启动"
98- echo " (无参数) 智能启动"
99- exit 1
100- ;;
101- esac
106+ echo " 🚀 启动容器..."
107+ docker-compose up
102108
103109echo " ✅ 容器启动完成!"
104110echo " 📋 查看日志: docker-compose logs -f"
0 commit comments