修改docker脚本
Some checks failed
Build and Push Docker Image / build (push) Has been cancelled
Sync to CNB / sync (push) Has been cancelled
Delete old workflow runs / del_runs (push) Has been cancelled
Upstream Sync / Sync latest commits from upstream repo (push) Has been cancelled

This commit is contained in:
2026-02-02 17:27:18 +08:00
parent 3d175d75af
commit 964451c383
3 changed files with 43 additions and 4 deletions

View File

@@ -1,11 +1,20 @@
FROM node:20-alpine AS base
# 默认使用本地镜像 local-node:20-alpine可先执行: docker tag node:20-alpine local-node:20-alpine
# 也可通过 --build-arg NODE_IMAGE=xxx 指定其他镜像
ARG NODE_IMAGE=node:20-alpine
FROM ${NODE_IMAGE} AS base
FROM base AS deps
# 国内构建若卡在 npm ci可传 --build-arg NPM_REGISTRY=https://registry.npmmirror.com
ARG NPM_REGISTRY=https://registry.npmjs.org/
RUN apk add --no-cache libc6-compat
WORKDIR /app
COPY package.json package-lock.json ./
# 提高超时与重试,避免内网/跨平台构建时 npm 拉包 EIDLETIMEOUT
RUN npm config set fetch-timeout 300000 && npm config set fetch-retries 5 && npm ci
RUN npm config set registry "$NPM_REGISTRY" \
&& npm config set fetch-timeout 300000 \
&& npm config set fetch-retries 5
# 使用 BuildKit 缓存 npm 目录,二次构建更快
RUN --mount=type=cache,target=/root/.npm \
npm ci
# Rebuild the source code only when needed
FROM base AS builder

View File

@@ -108,11 +108,19 @@ build_image() {
log_info "当前架构: $CURRENT_ARCH"
log_info "目标平台: $PLATFORM (服务器x86架构)"
# 构建x86架构镜像
# 构建x86架构镜像(可用 NODE_IMAGE 或 --node-image 指定本地 Node 基础镜像)
local build_opts=()
if [ "$NO_CACHE" = true ]; then
build_opts+=(--no-cache)
fi
if [ -n "$NODE_IMAGE" ]; then
log_info "使用 Node 基础镜像: $NODE_IMAGE"
build_opts+=(--build-arg "NODE_IMAGE=$NODE_IMAGE")
fi
if [ -n "$NPM_REGISTRY" ]; then
log_info "使用 npm 源: $NPM_REGISTRY"
build_opts+=(--build-arg "NPM_REGISTRY=$NPM_REGISTRY")
fi
if docker build \
"${build_opts[@]}" \
@@ -217,6 +225,22 @@ parse_args() {
VERSION_ARG="$2"
shift 2
;;
--node-image)
if [ -z "$2" ]; then
log_error "--node-image 参数需要指定镜像名(如 node:20-alpine"
exit 1
fi
NODE_IMAGE="$2"
shift 2
;;
--npm-registry)
if [ -z "$2" ]; then
log_error "--npm-registry 参数需要指定地址(如 https://registry.npmmirror.com"
exit 1
fi
NPM_REGISTRY="$2"
shift 2
;;
--build-only)
BUILD_ONLY=true
shift
@@ -290,6 +314,8 @@ show_help() {
echo ""
echo "选项:"
echo " -v, --version <版本号> 指定要构建的版本号"
echo " --node-image <镜像> 指定 Node 基础镜像(默认 node:20-alpine可用本地镜像"
echo " --npm-registry <地址> 指定 npm 源(卡在 npm ci 时可用 https://registry.npmmirror.com"
echo " --build-only 仅构建镜像,不推送"
echo " --no-cache 不使用缓存构建(暂未实现)"
echo " -h, --help 显示此帮助信息"
@@ -304,6 +330,10 @@ show_help() {
echo " $0 --version 1.0.4 # 使用 --version 参数指定版本1.0.4"
echo " $0 --build-only # 仅构建,不推送"
echo " $0 -v 1.0.4 --build-only # 指定版本并仅构建"
echo " $0 --node-image node:20-alpine # 使用本地/指定 Node 镜像"
echo " $0 --npm-registry https://registry.npmmirror.com # 国内构建用镜像源"
echo " NODE_IMAGE=node:20-alpine $0 # 通过环境变量指定 Node 镜像"
echo " NPM_REGISTRY=https://registry.npmmirror.com $0 # 通过环境变量指定 npm 源"
echo ""
echo "环境要求:"
echo " - Docker已安装并运行"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 270 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB