fix(deploy): 构建后同步 web/promotion 至 dist,解决 /promotion 静态 404

Made-with: Cursor
This commit is contained in:
whm
2026-03-20 17:59:13 +08:00
parent b95fcdeb8c
commit b69dde0f7e
2 changed files with 23 additions and 1 deletions

View File

@@ -288,6 +288,20 @@ echo "构建 web 前端 -> deploy/web/dist ..."
run_sudo docker run --rm -v "$ROOT/web:/app" -v "$ROOT/deploy/web/dist:/out" -w /app \
"${REGISTRY_MIRROR}node:20-alpine" sh -c "rm -rf /out/* 2>/dev/null; (npm ci --legacy-peer-deps 2>/dev/null || npm install --legacy-peer-deps) && npm run build && cp -r dist/. /out/"
# 官网访问的是 Nginx 根目录 deploy/web/dist不是源码 web/;必须把 /promotion/ 静态资源拷进 dist否则 social、logo 等一律 404
echo "同步 web/promotion -> deploy/web/dist/promotion排除 .mov大视频请走后台 API..."
mkdir -p "$ROOT/deploy/web/dist/promotion"
if command -v rsync >/dev/null 2>&1; then
rsync -a --exclude='*.mov' --exclude='*.MOV' --exclude='_pptx_extract/' \
"$ROOT/web/promotion/" "$ROOT/deploy/web/dist/promotion/"
else
mkdir -p "$ROOT/deploy/web/dist/promotion/social"
cp -a "$ROOT/web/promotion/social/." "$ROOT/deploy/web/dist/promotion/social/" 2>/dev/null || true
[ -f "$ROOT/web/promotion/logo.png" ] && cp -a "$ROOT/web/promotion/logo.png" "$ROOT/deploy/web/dist/promotion/" || true
[ -f "$ROOT/web/promotion/index.html" ] && cp -a "$ROOT/web/promotion/index.html" "$ROOT/deploy/web/dist/promotion/" || true
echo "提示: 未检测到 rsync仅复制了 social/logo 等;完整 promotion 请安装 rsync 后重跑本脚本。" >&2
fi
echo "构建 admin 前端 -> deploy/admin/dist ..."
# admin 的 vite 别名 @yh-web -> ../web/src须挂载项目根否则容器内无 web 目录会报 BlockRenderer.vue ENOENT
run_sudo docker run --rm -v "$ROOT:/repo" -v "$ROOT/deploy/admin/dist:/out" -w /repo/admin \