Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
陈曦
sub2api
Commits
89b1b744
Commit
89b1b744
authored
Dec 29, 2025
by
yangjianbo
Browse files
fix(构建): 支持配置基础镜像仓库
允许通过构建参数/脚本选项切换基础镜像来源,避免镜像源 403 影响构建
parent
bbd62363
Changes
2
Hide whitespace changes
Inline
Side-by-side
Dockerfile
View file @
89b1b744
...
@@ -6,10 +6,14 @@
...
@@ -6,10 +6,14 @@
# Stage 3: Final minimal image
# Stage 3: Final minimal image
# =============================================================================
# =============================================================================
ARG
NODE_IMAGE=node:24-alpine
ARG
GOLANG_IMAGE=golang:1.25-alpine
ARG
ALPINE_IMAGE=alpine:3.19
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# Stage 1: Frontend Builder
# Stage 1: Frontend Builder
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
FROM
node:24-alpine
AS frontend-builder
FROM
${NODE_IMAGE}
AS frontend-builder
WORKDIR
/app/frontend
WORKDIR
/app/frontend
...
@@ -24,7 +28,7 @@ RUN npm run build
...
@@ -24,7 +28,7 @@ RUN npm run build
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# Stage 2: Backend Builder
# Stage 2: Backend Builder
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
FROM
golang:1.25-alpine
AS backend-builder
FROM
${GOLANG_IMAGE}
AS backend-builder
# Build arguments for version info (set by CI)
# Build arguments for version info (set by CI)
ARG
VERSION=docker
ARG
VERSION=docker
...
@@ -56,7 +60,7 @@ RUN CGO_ENABLED=0 GOOS=linux go build \
...
@@ -56,7 +60,7 @@ RUN CGO_ENABLED=0 GOOS=linux go build \
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# Stage 3: Final Runtime Image
# Stage 3: Final Runtime Image
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
FROM
alpine:3.19
FROM
${ALPINE_IMAGE}
# Labels
# Labels
LABEL
maintainer="Wei-Shaw <github.com/Wei-Shaw>"
LABEL
maintainer="Wei-Shaw <github.com/Wei-Shaw>"
...
...
build_docker.sh
View file @
89b1b744
...
@@ -7,11 +7,12 @@
...
@@ -7,11 +7,12 @@
# ./build_docker.sh [选项]
# ./build_docker.sh [选项]
#
#
# 选项:
# 选项:
# -t, --tag TAG 指定镜像标签 (默认: latest)
# -t, --tag TAG 指定镜像标签 (默认: latest)
# -r, --registry REG 指定镜像仓库地址 (默认: 无)
# -r, --registry REG 指定镜像仓库地址 (默认: 无)
# -p, --push 构建后推送镜像到仓库
# -b, --base-registry REG 指定基础镜像仓库地址 (默认: 使用 docker.io)
# --no-cache 不使用 Docker 构建缓存
# -p, --push 构建后推送镜像到仓库
# -h, --help 显示帮助信息
# --no-cache 不使用 Docker 构建缓存
# -h, --help 显示帮助信息
#
#
# 示例:
# 示例:
# ./build_docker.sh # 构建 sub2api:latest
# ./build_docker.sh # 构建 sub2api:latest
...
@@ -38,6 +39,7 @@ NC='\033[0m' # No Color
...
@@ -38,6 +39,7 @@ NC='\033[0m' # No Color
IMAGE_NAME
=
"sub2api"
IMAGE_NAME
=
"sub2api"
TAG
=
"latest"
TAG
=
"latest"
REGISTRY
=
""
REGISTRY
=
""
BASE_IMAGE_REGISTRY
=
"
${
BASE_IMAGE_REGISTRY
:-}
"
PUSH
=
false
PUSH
=
false
NO_CACHE
=
""
NO_CACHE
=
""
...
@@ -82,6 +84,10 @@ while [[ $# -gt 0 ]]; do
...
@@ -82,6 +84,10 @@ while [[ $# -gt 0 ]]; do
REGISTRY
=
"
$2
"
REGISTRY
=
"
$2
"
shift
2
shift
2
;;
;;
-b
|
--base-registry
)
BASE_IMAGE_REGISTRY
=
"
$2
"
shift
2
;;
-p
|
--push
)
-p
|
--push
)
PUSH
=
true
PUSH
=
true
shift
shift
...
@@ -151,6 +157,17 @@ VERSION=$(get_version)
...
@@ -151,6 +157,17 @@ VERSION=$(get_version)
COMMIT
=
$(
get_commit
)
COMMIT
=
$(
get_commit
)
DATE
=
$(
get_date
)
DATE
=
$(
get_date
)
# 解析基础镜像
NODE_IMAGE
=
"node:24-alpine"
GOLANG_IMAGE
=
"golang:1.25-alpine"
ALPINE_IMAGE
=
"alpine:3.19"
if
[[
-n
"
$BASE_IMAGE_REGISTRY
"
]]
;
then
BASE_IMAGE_REGISTRY
=
"
${
BASE_IMAGE_REGISTRY
%/
}
"
NODE_IMAGE
=
"
${
BASE_IMAGE_REGISTRY
}
/library/node:24-alpine"
GOLANG_IMAGE
=
"
${
BASE_IMAGE_REGISTRY
}
/library/golang:1.25-alpine"
ALPINE_IMAGE
=
"
${
BASE_IMAGE_REGISTRY
}
/library/alpine:3.19"
fi
# 构建完整镜像名称
# 构建完整镜像名称
if
[[
-n
"
$REGISTRY
"
]]
;
then
if
[[
-n
"
$REGISTRY
"
]]
;
then
FULL_IMAGE_NAME
=
"
${
REGISTRY
}
/
${
IMAGE_NAME
}
:
${
TAG
}
"
FULL_IMAGE_NAME
=
"
${
REGISTRY
}
/
${
IMAGE_NAME
}
:
${
TAG
}
"
...
@@ -167,6 +184,9 @@ info "镜像名称: ${FULL_IMAGE_NAME}"
...
@@ -167,6 +184,9 @@ info "镜像名称: ${FULL_IMAGE_NAME}"
info
"版本:
${
VERSION
}
"
info
"版本:
${
VERSION
}
"
info
"Commit:
${
COMMIT
}
"
info
"Commit:
${
COMMIT
}
"
info
"构建时间:
${
DATE
}
"
info
"构建时间:
${
DATE
}
"
if
[[
-n
"
$BASE_IMAGE_REGISTRY
"
]]
;
then
info
"基础镜像仓库:
${
BASE_IMAGE_REGISTRY
}
"
fi
if
[[
-n
"
$NO_CACHE
"
]]
;
then
if
[[
-n
"
$NO_CACHE
"
]]
;
then
info
"缓存: 禁用"
info
"缓存: 禁用"
fi
fi
...
@@ -181,6 +201,9 @@ docker build \
...
@@ -181,6 +201,9 @@ docker build \
--build-arg
VERSION
=
"
${
VERSION
}
"
\
--build-arg
VERSION
=
"
${
VERSION
}
"
\
--build-arg
COMMIT
=
"
${
COMMIT
}
"
\
--build-arg
COMMIT
=
"
${
COMMIT
}
"
\
--build-arg
DATE
=
"
${
DATE
}
"
\
--build-arg
DATE
=
"
${
DATE
}
"
\
--build-arg
NODE_IMAGE
=
"
${
NODE_IMAGE
}
"
\
--build-arg
GOLANG_IMAGE
=
"
${
GOLANG_IMAGE
}
"
\
--build-arg
ALPINE_IMAGE
=
"
${
ALPINE_IMAGE
}
"
\
-t
"
${
FULL_IMAGE_NAME
}
"
\
-t
"
${
FULL_IMAGE_NAME
}
"
\
-f
Dockerfile
\
-f
Dockerfile
\
.
.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment