-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathstart.sh
More file actions
214 lines (187 loc) · 4.52 KB
/
Copy pathstart.sh
File metadata and controls
214 lines (187 loc) · 4.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
#!/bin/bash
# Light Browser 启动脚本
# 功能:启动 Light Browser 服务,包含 Camoufox + noVNC
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
log_debug() {
echo -e "${BLUE}[DEBUG]${NC} $1"
}
# 检查 Docker 是否安装
check_docker() {
if ! command -v docker &> /dev/null; then
log_error "Docker 未安装,请先安装 Docker"
exit 1
fi
if ! command -v docker-compose &> /dev/null; then
log_error "Docker Compose 未安装,请先安装 Docker Compose"
exit 1
fi
}
# 检查环境变量文件
check_env() {
if [ ! -f ".env" ]; then
if [ -f ".env.example" ]; then
log_warn ".env 文件不存在,从 .env.example 复制"
cp .env.example .env
log_info "请编辑 .env 文件配置飞书机器人等参数"
else
log_error ".env 和 .env.example 文件都不存在"
exit 1
fi
fi
}
# 创建必要目录
create_dirs() {
log_info "创建必要目录..."
mkdir -p logs
chmod 755 logs
}
# 构建镜像
build_image() {
log_info "构建 Light Browser 镜像..."
docker-compose build --no-cache
if [ $? -eq 0 ]; then
log_info "镜像构建成功"
else
log_error "镜像构建失败"
exit 1
fi
}
# 启动服务
start_service() {
log_info "启动 Light Browser 服务..."
docker-compose up -d
if [ $? -eq 0 ]; then
log_info "服务启动成功"
# 等待服务就绪
log_info "等待服务就绪..."
sleep 10
# 检查服务状态
check_service_status
else
log_error "服务启动失败"
exit 1
fi
}
# 检查服务状态
check_service_status() {
log_info "检查服务状态..."
# 检查容器状态
if docker-compose ps | grep -q "Up"; then
log_info "容器运行正常"
else
log_error "容器未正常运行"
docker-compose logs --tail=20
return 1
fi
# 检查 CDP 端口
if curl -s http://localhost:9222/json/version > /dev/null; then
log_info "CDP 端口 (9222) 正常"
else
log_warn "CDP 端口 (9222) 可能未就绪,请稍后检查"
fi
# 检查 noVNC 端口
if curl -s http://localhost:6080 > /dev/null; then
log_info "noVNC 端口 (6080) 正常"
else
log_warn "noVNC 端口 (6080) 可能未就绪,请稍后检查"
fi
log_info "服务访问地址:"
echo " - CDP WebSocket: ws://localhost:9222"
echo " - noVNC 界面: http://localhost:6080/vnc.html"
}
# 停止服务
stop_service() {
log_info "停止 Light Browser 服务..."
docker-compose down
log_info "服务已停止"
}
# 重启服务
restart_service() {
log_info "重启 Light Browser 服务..."
stop_service
sleep 2
start_service
}
# 查看日志
show_logs() {
log_info "显示服务日志..."
docker-compose logs -f
}
# 显示帮助
show_help() {
echo "Light Browser 管理脚本"
echo ""
echo "用法: $0 [命令]"
echo ""
echo "命令:"
echo " start 启动服务"
echo " stop 停止服务"
echo " restart 重启服务"
echo " status 检查服务状态"
echo " logs 查看日志"
echo " build 重新构建镜像"
echo " help 显示帮助"
echo ""
echo "示例:"
echo " $0 start # 启动服务"
echo " $0 logs # 查看实时日志"
}
# 主函数
main() {
case "${1:-start}" in
"start")
check_docker
check_env
create_dirs
start_service
;;
"stop")
check_docker
stop_service
;;
"restart")
check_docker
restart_service
;;
"status")
check_docker
check_service_status
;;
"logs")
check_docker
show_logs
;;
"build")
check_docker
check_env
create_dirs
build_image
;;
"help"|"-h"|"--help")
show_help
;;
*)
log_error "未知命令: $1"
show_help
exit 1
;;
esac
}
# 执行主函数
main "$@"