94 lines
2.2 KiB
Bash
94 lines
2.2 KiB
Bash
#!/bin/bash
|
|
# ============================================
|
|
# HYC下载站 v2.3 - 多架构 Docker 构建脚本
|
|
# 支持: amd64, arm64, arm/v7, i386
|
|
# ============================================
|
|
|
|
set -e
|
|
|
|
# 颜色
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
VERSION=${1:-v2.3}
|
|
REGISTRY=${2:-hyc-download-station}
|
|
TAG=${3:-$VERSION}
|
|
|
|
# 支持的平台
|
|
PLATFORMS="linux/amd64,linux/arm64,linux/arm/v7,linux/386"
|
|
|
|
echo "========================================"
|
|
echo " HYC下载站 v2.3 - 多架构构建"
|
|
echo "========================================"
|
|
echo " 版本: $TAG"
|
|
echo " 平台: $PLATFORMS"
|
|
echo
|
|
|
|
# 检查 Docker
|
|
if ! command -v docker &> /dev/null; then
|
|
echo -e "${RED}✗ Docker 未安装${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查 BuildX
|
|
if ! docker buildx version &> /dev/null; then
|
|
echo -e "${YELLOW}⚠ Docker BuildX 未安装,尝试安装...${NC}"
|
|
docker buildx install || true
|
|
fi
|
|
|
|
# 创建构建器
|
|
echo "[1/4] 创建构建器..."
|
|
docker buildx rm hyc-builder 2>/dev/null || true
|
|
docker buildx create \
|
|
--name hyc-builder \
|
|
--platform $PLATFORMS \
|
|
--use
|
|
|
|
# 引导构建器
|
|
echo "[2/4] 引导构建器..."
|
|
docker buildx inspect --bootstrap
|
|
|
|
# 构建镜像
|
|
echo "[3/4] 构建镜像..."
|
|
echo " 构建中,请稍候..."
|
|
|
|
START_TIME=$(date +%s)
|
|
|
|
docker buildx build \
|
|
--platform $PLATFORMS \
|
|
--tag "$REGISTRY:$TAG" \
|
|
--tag "$REGISTRY:latest" \
|
|
--push \
|
|
--file docker/Dockerfile.multiarch \
|
|
.
|
|
|
|
END_TIME=$(date +%s)
|
|
BUILD_TIME=$((END_TIME - START_TIME))
|
|
|
|
echo -e "${GREEN}✓ 构建完成 (${BUILD_TIME}秒)${NC}"
|
|
|
|
# 推送清单
|
|
echo "[4/4] 创建清单..."
|
|
docker manifest create "$REGISTRY:$TAG" \
|
|
"$REGISTRY:$TAG-amd64" \
|
|
"$REGISTRY:$TAG-arm64" \
|
|
"$REGISTRY:$TAG-arm-v7" \
|
|
"$REGISTRY:$TAG-386" 2>/dev/null || true
|
|
|
|
docker manifest push "$REGISTRY:$TAG" || true
|
|
|
|
echo
|
|
echo "========================================"
|
|
echo -e "${GREEN}✓ 多架构构建完成${NC}"
|
|
echo "========================================"
|
|
echo
|
|
echo "镜像标签:"
|
|
echo " - $REGISTRY:$TAG"
|
|
echo " - $REGISTRY:latest"
|
|
echo
|
|
echo "推送到仓库:"
|
|
echo " docker pull $REGISTRY:$TAG"
|
|
echo
|