#!/usr/bin/env bash set -euo pipefail # ============================================ # 多架构构建 & 推送脚本 # 用法: # DOCKER_USER=yourname ./buildx-push.sh # DOCKER_USER=yourname VERSION=v1.0.0 ./buildx-push.sh # ============================================ DOCKER_USER="${DOCKER_USER:-DOCKER_USER}" VERSION="${VERSION:-$(git describe --tags --always 2>/dev/null || echo latest)}" PLATFORMS="linux/amd64,linux/arm64" # 确保 buildx 可用 if ! docker buildx version &>/dev/null; then echo "❌ docker buildx 不可用,请安装或升级 Docker" exit 1 fi # 创建/复用 multiarch builder if ! docker buildx inspect multiarch &>/dev/null 2>&1; then echo "🔧 创建 multiarch builder..." docker buildx create --name multiarch --driver docker-container --use else docker buildx use multiarch fi docker buildx inspect --bootstrap echo "" echo "========================================" echo "🚀 构建 backend (${PLATFORMS})" echo " tag: ${DOCKER_USER}/meoo-backend:${VERSION}" echo "========================================" docker buildx build \ --platform "${PLATFORMS}" \ -t "${DOCKER_USER}/meoo-backend:${VERSION}" \ -t "${DOCKER_USER}/meoo-backend:latest" \ --push \ ./backend echo "" echo "========================================" echo "🚀 构建 frontend (${PLATFORMS})" echo " tag: ${DOCKER_USER}/meoo-frontend:${VERSION}" echo "========================================" docker buildx build \ --platform "${PLATFORMS}" \ -t "${DOCKER_USER}/meoo-frontend:${VERSION}" \ -t "${DOCKER_USER}/meoo-frontend:latest" \ --push \ . echo "" echo "✅ 完成!" echo " backend: ${DOCKER_USER}/meoo-backend:${VERSION}" echo " frontend: ${DOCKER_USER}/meoo-frontend:${VERSION}"