修改docker脚本
Some checks failed
Some checks failed
This commit is contained in:
15
Dockerfile
15
Dockerfile
@@ -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
|
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
|
RUN apk add --no-cache libc6-compat
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY package.json package-lock.json ./
|
COPY package.json package-lock.json ./
|
||||||
# 提高超时与重试,避免内网/跨平台构建时 npm 拉包 EIDLETIMEOUT
|
RUN npm config set registry "$NPM_REGISTRY" \
|
||||||
RUN npm config set fetch-timeout 300000 && npm config set fetch-retries 5 && npm ci
|
&& 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
|
# Rebuild the source code only when needed
|
||||||
FROM base AS builder
|
FROM base AS builder
|
||||||
|
|||||||
@@ -108,11 +108,19 @@ build_image() {
|
|||||||
log_info "当前架构: $CURRENT_ARCH"
|
log_info "当前架构: $CURRENT_ARCH"
|
||||||
log_info "目标平台: $PLATFORM (服务器x86架构)"
|
log_info "目标平台: $PLATFORM (服务器x86架构)"
|
||||||
|
|
||||||
# 构建x86架构镜像
|
# 构建x86架构镜像(可用 NODE_IMAGE 或 --node-image 指定本地 Node 基础镜像)
|
||||||
local build_opts=()
|
local build_opts=()
|
||||||
if [ "$NO_CACHE" = true ]; then
|
if [ "$NO_CACHE" = true ]; then
|
||||||
build_opts+=(--no-cache)
|
build_opts+=(--no-cache)
|
||||||
fi
|
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 \
|
if docker build \
|
||||||
"${build_opts[@]}" \
|
"${build_opts[@]}" \
|
||||||
@@ -217,6 +225,22 @@ parse_args() {
|
|||||||
VERSION_ARG="$2"
|
VERSION_ARG="$2"
|
||||||
shift 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)
|
||||||
BUILD_ONLY=true
|
BUILD_ONLY=true
|
||||||
shift
|
shift
|
||||||
@@ -290,6 +314,8 @@ show_help() {
|
|||||||
echo ""
|
echo ""
|
||||||
echo "选项:"
|
echo "选项:"
|
||||||
echo " -v, --version <版本号> 指定要构建的版本号"
|
echo " -v, --version <版本号> 指定要构建的版本号"
|
||||||
|
echo " --node-image <镜像> 指定 Node 基础镜像(默认 node:20-alpine),可用本地镜像"
|
||||||
|
echo " --npm-registry <地址> 指定 npm 源(卡在 npm ci 时可用 https://registry.npmmirror.com)"
|
||||||
echo " --build-only 仅构建镜像,不推送"
|
echo " --build-only 仅构建镜像,不推送"
|
||||||
echo " --no-cache 不使用缓存构建(暂未实现)"
|
echo " --no-cache 不使用缓存构建(暂未实现)"
|
||||||
echo " -h, --help 显示此帮助信息"
|
echo " -h, --help 显示此帮助信息"
|
||||||
@@ -304,6 +330,10 @@ show_help() {
|
|||||||
echo " $0 --version 1.0.4 # 使用 --version 参数指定版本1.0.4"
|
echo " $0 --version 1.0.4 # 使用 --version 参数指定版本1.0.4"
|
||||||
echo " $0 --build-only # 仅构建,不推送"
|
echo " $0 --build-only # 仅构建,不推送"
|
||||||
echo " $0 -v 1.0.4 --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 "环境要求:"
|
echo "环境要求:"
|
||||||
echo " - Docker已安装并运行"
|
echo " - Docker已安装并运行"
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 270 KiB After Width: | Height: | Size: 4.2 KiB |
Reference in New Issue
Block a user