部署选号网时无本机npm则改用Docker构建
服务器可不装Node,自动用node:24-alpine镜像执行npm ci/build。
This commit is contained in:
+1
-1
@@ -50,7 +50,7 @@ HFB_SHOW_DIR=../hfb_show
|
||||
要求:
|
||||
|
||||
1. 服务器上 `hfb_show` 与 `hfb_sys` 同级目录(或 `HFB_SHOW_DIR` 指向真实路径)。
|
||||
2. 部署机可执行 `npm`(脚本会在 build Caddy 前构建选号网 dist)。
|
||||
2. 部署机有 Docker 即可;**不必安装 Node/npm**(无 npm 时脚本用 `node:24-alpine` 容器构建选号网)。
|
||||
3. 选号网域名 DNS 已指向本机。
|
||||
|
||||
一键脚本会自动:
|
||||
|
||||
+25
-9
@@ -80,6 +80,7 @@ show_help() {
|
||||
选号网独立域名,A 记录指向本机;留空则不启用
|
||||
HFB_SHOW_DIR=../hfb_show
|
||||
选号网源码目录(相对 hfb_sys 根目录或绝对路径)
|
||||
构建优先用本机 npm;没有 npm 时自动用 Docker node 镜像,服务器不必装 Node
|
||||
|
||||
示例:
|
||||
./scripts/deploy-prod.sh
|
||||
@@ -277,17 +278,32 @@ prepare_show_site() {
|
||||
fi
|
||||
log_warn "使用已有 show-dist(--no-build)"
|
||||
else
|
||||
need_cmd npm
|
||||
# 服务器通常无本机 Node:优先本机 npm,否则用 Docker 内 node 镜像构建
|
||||
log "构建选号网静态资源:${show_dir}"
|
||||
(
|
||||
cd "${show_dir}"
|
||||
if [[ -f package-lock.json ]]; then
|
||||
npm ci
|
||||
else
|
||||
npm install
|
||||
if command -v npm >/dev/null 2>&1; then
|
||||
(
|
||||
cd "${show_dir}"
|
||||
if [[ -f package-lock.json ]]; then
|
||||
npm ci
|
||||
else
|
||||
npm install
|
||||
fi
|
||||
npm run build
|
||||
)
|
||||
else
|
||||
log_warn "本机无 npm,使用 Docker 镜像 node:24-alpine 构建选号网(无需安装 Node)"
|
||||
need_cmd docker
|
||||
local npm_cmd="npm ci && npm run build"
|
||||
if [[ ! -f "${show_dir}/package-lock.json" ]]; then
|
||||
npm_cmd="npm install && npm run build"
|
||||
fi
|
||||
npm run build
|
||||
)
|
||||
# 挂载源码目录;node_modules/dist 写在挂载卷上,与本机 npm 行为一致
|
||||
docker run --rm \
|
||||
-v "${show_dir}:/app" \
|
||||
-w /app \
|
||||
node:24-alpine \
|
||||
sh -c "${npm_cmd}"
|
||||
fi
|
||||
if [[ ! -d "${show_dir}/dist" ]]; then
|
||||
log_error "选号网构建失败:未生成 dist/"
|
||||
exit 1
|
||||
|
||||
Reference in New Issue
Block a user