58 lines
1.7 KiB
Bash
Executable File
58 lines
1.7 KiB
Bash
Executable File
#!/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}"
|