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