#!/bin/bash # Build multi-architecture Docker image for web-gateway # Supports: amd64 (x86_64) and arm64 (Raspberry Pi 4, Apple Silicon) set -e # Configuration IMAGE_NAME="${IMAGE_NAME:-easylinux/web-gateway}" IMAGE_TAG="${IMAGE_TAG:-latest}" PLATFORMS="${PLATFORMS:-linux/amd64,linux/arm64}" echo "============================================" echo "Building Multi-Arch Docker Image" echo "============================================" echo "Image: ${IMAGE_NAME}:${IMAGE_TAG}" echo "Platforms: ${PLATFORMS}" echo "============================================" # Check if buildx is available if ! docker buildx version >/dev/null 2>&1; then echo "Error: docker buildx not found. Please install Docker Buildx." echo "See: https://docs.docker.com/buildx/working-with-buildx/" exit 1 fi # Create builder instance if it doesn't exist if ! docker buildx ls | grep -q multiarch-builder; then echo "Creating multiarch-builder..." docker buildx create --name multiarch-builder --use --bootstrap else echo "Using existing multiarch-builder..." docker buildx use multiarch-builder fi # Build and push multi-arch image echo "Building for platforms: ${PLATFORMS}..." docker buildx build \ --platform "${PLATFORMS}" \ --tag "${IMAGE_NAME}:${IMAGE_TAG}" \ --push \ . echo "============================================" echo "✅ Multi-arch image built successfully!" echo "============================================" echo "Image: ${IMAGE_NAME}:${IMAGE_TAG}" echo "" echo "Test on different platforms:" echo " amd64 (x86_64): docker run --rm ${IMAGE_NAME}:${IMAGE_TAG} node --version" echo " arm64 (RPi 4): docker run --rm ${IMAGE_NAME}:${IMAGE_TAG} node --version" echo "" echo "Verify architectures:" echo " docker buildx imagetools inspect ${IMAGE_NAME}:${IMAGE_TAG}"