feat: multiarch build
This commit is contained in:
64
scripts/setup-multiarch.sh
Executable file
64
scripts/setup-multiarch.sh
Executable file
@@ -0,0 +1,64 @@
|
||||
#!/bin/bash
|
||||
|
||||
# SPORE Multiarch Build Setup Script
|
||||
# This script sets up Docker buildx for multiarch image building
|
||||
|
||||
set -e
|
||||
|
||||
echo "🚀 SPORE Multiarch Build Setup"
|
||||
echo "================================"
|
||||
echo ""
|
||||
|
||||
# Check if buildx is installed
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo "❌ Docker is not installed. Please install Docker first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Docker is installed"
|
||||
|
||||
# Install QEMU emulation for cross-architecture builds
|
||||
echo ""
|
||||
echo "📦 Installing QEMU emulation..."
|
||||
docker run --rm --privileged tonistiigi/binfmt:latest --install all
|
||||
|
||||
echo "✅ QEMU emulation installed"
|
||||
|
||||
# Check if multiarch builder already exists
|
||||
EXISTING_BUILDER=$(docker buildx ls --format '{{.Name}}' | grep -w multiarch || true)
|
||||
|
||||
if [ -z "$EXISTING_BUILDER" ]; then
|
||||
echo ""
|
||||
echo "📦 Creating multiarch builder..."
|
||||
docker buildx create --name multiarch --use
|
||||
echo "✅ Multiarch builder created"
|
||||
else
|
||||
echo ""
|
||||
echo "✅ Multiarch builder already exists"
|
||||
echo "📦 Switching to multiarch builder..."
|
||||
docker buildx use multiarch
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "🔧 Inspecting builder..."
|
||||
docker buildx inspect --bootstrap
|
||||
|
||||
echo ""
|
||||
echo "✅ Multiarch build setup complete!"
|
||||
echo ""
|
||||
echo "Available platforms:"
|
||||
docker buildx inspect --bootstrap | grep "Platform:"
|
||||
|
||||
echo ""
|
||||
echo "📚 Usage:"
|
||||
echo " Build and push all multiarch images:"
|
||||
echo " cd spore-deployment"
|
||||
echo " make push-multiarch"
|
||||
echo ""
|
||||
echo " Build without pushing:"
|
||||
echo " make build-multiarch"
|
||||
echo ""
|
||||
echo " Build with custom tag:"
|
||||
echo " make push-multiarch IMAGE_TAG=v1.0.0"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user