fix(构建): 支持配置基础镜像仓库
允许通过构建参数/脚本选项切换基础镜像来源,避免镜像源 403 影响构建
This commit is contained in:
10
Dockerfile
10
Dockerfile
@@ -6,10 +6,14 @@
|
||||
# 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
|
||||
# -----------------------------------------------------------------------------
|
||||
FROM node:24-alpine AS frontend-builder
|
||||
FROM ${NODE_IMAGE} AS frontend-builder
|
||||
|
||||
WORKDIR /app/frontend
|
||||
|
||||
@@ -24,7 +28,7 @@ RUN npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
# 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)
|
||||
ARG VERSION=docker
|
||||
@@ -56,7 +60,7 @@ RUN CGO_ENABLED=0 GOOS=linux go build \
|
||||
# -----------------------------------------------------------------------------
|
||||
# Stage 3: Final Runtime Image
|
||||
# -----------------------------------------------------------------------------
|
||||
FROM alpine:3.19
|
||||
FROM ${ALPINE_IMAGE}
|
||||
|
||||
# Labels
|
||||
LABEL maintainer="Wei-Shaw <github.com/Wei-Shaw>"
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
# 选项:
|
||||
# -t, --tag TAG 指定镜像标签 (默认: latest)
|
||||
# -r, --registry REG 指定镜像仓库地址 (默认: 无)
|
||||
# -b, --base-registry REG 指定基础镜像仓库地址 (默认: 使用 docker.io)
|
||||
# -p, --push 构建后推送镜像到仓库
|
||||
# --no-cache 不使用 Docker 构建缓存
|
||||
# -h, --help 显示帮助信息
|
||||
@@ -38,6 +39,7 @@ NC='\033[0m' # No Color
|
||||
IMAGE_NAME="sub2api"
|
||||
TAG="latest"
|
||||
REGISTRY=""
|
||||
BASE_IMAGE_REGISTRY="${BASE_IMAGE_REGISTRY:-}"
|
||||
PUSH=false
|
||||
NO_CACHE=""
|
||||
|
||||
@@ -82,6 +84,10 @@ while [[ $# -gt 0 ]]; do
|
||||
REGISTRY="$2"
|
||||
shift 2
|
||||
;;
|
||||
-b|--base-registry)
|
||||
BASE_IMAGE_REGISTRY="$2"
|
||||
shift 2
|
||||
;;
|
||||
-p|--push)
|
||||
PUSH=true
|
||||
shift
|
||||
@@ -151,6 +157,17 @@ VERSION=$(get_version)
|
||||
COMMIT=$(get_commit)
|
||||
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
|
||||
FULL_IMAGE_NAME="${REGISTRY}/${IMAGE_NAME}:${TAG}"
|
||||
@@ -167,6 +184,9 @@ info "镜像名称: ${FULL_IMAGE_NAME}"
|
||||
info "版本: ${VERSION}"
|
||||
info "Commit: ${COMMIT}"
|
||||
info "构建时间: ${DATE}"
|
||||
if [[ -n "$BASE_IMAGE_REGISTRY" ]]; then
|
||||
info "基础镜像仓库: ${BASE_IMAGE_REGISTRY}"
|
||||
fi
|
||||
if [[ -n "$NO_CACHE" ]]; then
|
||||
info "缓存: 禁用"
|
||||
fi
|
||||
@@ -181,6 +201,9 @@ docker build \
|
||||
--build-arg VERSION="${VERSION}" \
|
||||
--build-arg COMMIT="${COMMIT}" \
|
||||
--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}" \
|
||||
-f Dockerfile \
|
||||
.
|
||||
|
||||
Reference in New Issue
Block a user