合并应用宝 Worker 容器

This commit is contained in:
yml2213
2026-08-12 17:59:26 +08:00
parent cebbd94ae8
commit 1a20c367db
15 changed files with 155 additions and 110 deletions
+16 -33
View File
@@ -36,10 +36,9 @@ DB_MAX_OVERFLOW="${DB_MAX_OVERFLOW:-20}"
DB_POOL_TIMEOUT="${DB_POOL_TIMEOUT:-30}"
DB_POOL_RECYCLE="${DB_POOL_RECYCLE:-1800}"
YYB_WORKER_PORT="${YYB_WORKER_PORT:-8810}"
YYB_WORKER_IMAGE="${YYB_WORKER_IMAGE:-douyu-yyb-worker:local}"
DEV_YYB_WORKER_URL="${DEV_YYB_WORKER_URL:-http://127.0.0.1:${YYB_WORKER_PORT}}"
YYB_WORKER_CONTAINER="${YYB_WORKER_CONTAINER:-douyu-yyb-worker-dev}"
YYB_WORKER_DATA_DIR="${YYB_WORKER_DATA_DIR:-$ROOT_DIR/data/yyb-worker-dev}"
YYB_WORKER_NODE_MODULES="$ROOT_DIR/services/yyb-worker/node_modules"
LOG_DIR="$ROOT_DIR/logs"
LOG_DATE="$(date +%Y-%m-%d)"
BACKEND_LOG="$LOG_DIR/backend-$LOG_DATE.log"
@@ -48,8 +47,7 @@ WORKER_LOG="$LOG_DIR/yyb-worker-$LOG_DATE.log"
BACKEND_PID=""
FRONTEND_PID=""
WORKER_LOG_PID=""
WORKER_STARTED_BY_DEV=false
WORKER_PID=""
stop_tree() {
local pid="$1"
@@ -68,10 +66,7 @@ cleanup() {
trap - EXIT INT TERM
stop_tree "$FRONTEND_PID"
stop_tree "$BACKEND_PID"
stop_tree "$WORKER_LOG_PID"
if [ "$WORKER_STARTED_BY_DEV" = true ]; then
docker stop "$YYB_WORKER_CONTAINER" >/dev/null 2>&1 || true
fi
stop_tree "$WORKER_PID"
}
require_cmd() {
@@ -143,26 +138,21 @@ mkdir -p "$YYB_WORKER_DATA_DIR"
trap cleanup EXIT INT TERM
start_yyb_worker() {
if docker ps --format '{{.Names}}' | grep -qx "$YYB_WORKER_CONTAINER"; then
echo "本地 YYB Worker 已运行: ${DEV_YYB_WORKER_URL}"
return
fi
if docker ps -a --format '{{.Names}}' | grep -qx "$YYB_WORKER_CONTAINER"; then
echo "发现已停止的本地 YYB Worker,正在清理旧容器..."
docker rm "$YYB_WORKER_CONTAINER" >/dev/null
if [ ! -d "$YYB_WORKER_NODE_MODULES/jsdom" ]; then
echo "正在安装本地 YYB Worker Node 依赖..."
(cd "$ROOT_DIR/services/yyb-worker" && npm ci)
fi
echo "正在构建本地 YYB Worker..."
YYB_WORKER_KEY="$YYB_WORKER_KEY" $COMPOSE build yyb-worker
echo "正在启动本地 YYB Worker..."
docker run -d --rm \
--name "$YYB_WORKER_CONTAINER" \
-p "127.0.0.1:${YYB_WORKER_PORT}:8810" \
-e TZ="${TZ:-Asia/Shanghai}" \
-e YYB_WORKER_KEY="$YYB_WORKER_KEY" \
-v "$YYB_WORKER_DATA_DIR:/app/config/worker-jobs" \
"$YYB_WORKER_IMAGE" >/dev/null
WORKER_STARTED_BY_DEV=true
(
cd "$ROOT_DIR/services/yyb-worker/runtime"
YYB_WORKER_KEY="$YYB_WORKER_KEY" \
uv run --project "$ROOT_DIR" python scripts/yyb-worker.py \
--host 127.0.0.1 \
--port "$YYB_WORKER_PORT" \
--data-dir "$YYB_WORKER_DATA_DIR" 2>&1 | tee -a "$WORKER_LOG"
) &
WORKER_PID=$!
echo "等待本地 YYB Worker 就绪..."
for i in $(seq 1 15); do
@@ -172,21 +162,14 @@ start_yyb_worker() {
fi
if [ "$i" = "15" ]; then
echo "YYB Worker 启动超时,查看日志:"
docker logs "$YYB_WORKER_CONTAINER" || true
tail -n 100 "$WORKER_LOG" 2>/dev/null || true
exit 1
fi
sleep 1
done
}
stream_yyb_worker_logs() {
# docker logs 默认只输出到终端;持续转存后保留 Worker 的异常和协议脚本输出。
(docker logs --tail 100 --follow "$YYB_WORKER_CONTAINER" 2>&1 | tee -a "$WORKER_LOG") &
WORKER_LOG_PID=$!
}
start_yyb_worker
stream_yyb_worker_logs
echo "正在启动本地 MySQL..."
MYSQL_IMAGE="$MYSQL_IMAGE" \