合并应用宝 Worker 容器
This commit is contained in:
@@ -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" \
|
||||
|
||||
Reference in New Issue
Block a user