fix(构建): 支持配置基础镜像仓库
允许通过构建参数/脚本选项切换基础镜像来源,避免镜像源 403 影响构建
This commit is contained in:
10
Dockerfile
10
Dockerfile
@@ -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
|
|||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# 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 \
|
|||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# 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>"
|
||||||
|
|||||||
@@ -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
|
|||||||
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
|
|||||||
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)
|
|||||||
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}"
|
|||||||
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 \
|
|||||||
--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 \
|
||||||
.
|
.
|
||||||
|
|||||||
Reference in New Issue
Block a user