This project now supports multi-architecture Docker images that can run on:
- Linux (amd64, arm64)
- macOS (via Docker Desktop)
- Windows (via Docker Desktop with WSL2)
linux/amd64- Standard x86_64 Linux systemslinux/arm64- ARM64 Linux systems (Apple Silicon, ARM servers)
# Native support - will automatically use the correct architecture
docker run ghcr.io/g-core/fastedge-mcp-server:latest# Docker Desktop automatically pulls the correct architecture
# Intel Macs: linux/amd64
# Apple Silicon Macs: linux/arm64
docker run ghcr.io/g-core/fastedge-mcp-server:latest# Docker Desktop with WSL2 backend
docker run ghcr.io/g-core/fastedge-mcp-server:latestThe base image is built using the existing workflow:
# Use the build-docker-base-image.yaml workflow
# Manually triggered via GitHub Actions UI or APIThe main application image is built using the multi-architecture base:
# Use the build-push-docker action with platforms: linux/amd64,linux/arm64For environments with proper network connectivity and ARM64 emulation:
# Set up buildx with docker-container driver (one-time setup)
docker buildx create --name multiarch --driver docker-container --use
docker buildx inspect --bootstrap
# Build base image for multiple architectures
docker buildx build --platform linux/amd64,linux/arm64 -f Dockerfile-base -t fastedge-mcp-server-base:latest --load .
# Build main image for multiple architectures
docker buildx build --platform linux/amd64,linux/arm64 --build-arg BASE_IMAGE=fastedge-mcp-server-base:latest -t fastedge-mcp-server:latest --load .If you encounter network issues or want faster builds:
# Use default driver (no special setup required)
docker buildx use default
# Build base image for current platform only
docker build -f Dockerfile-base -t fastedge-mcp-server-base:latest .
# Build main image for current platform
docker build --build-arg BASE_IMAGE=fastedge-mcp-server-base:latest -t fastedge-mcp-server:latest .- Node.js Binaries: The Dockerfile-base now automatically detects the target architecture and downloads the appropriate Node.js binary
- Rust Compilation: Rust toolchain supports cross-compilation for both amd64 and arm64
- npm Dependencies: Native dependencies are compiled for the target architecture during the build process
- Windows Containers: Not supported due to complexity and requirement for Windows hosts
- Performance: ARM64 images may have slightly different performance characteristics
- Build Time: Multi-architecture builds take longer due to building for multiple platforms
If you encounter platform-specific issues, you can force a specific architecture:
# Force amd64 on any platform
docker run --platform linux/amd64 ghcr.io/g-core/fastedge-mcp-server:latest
# Force arm64 on any platform (if available)
docker run --platform linux/arm64 ghcr.io/g-core/fastedge-mcp-server:latestCommon issues and solutions when building multi-architecture images:
Problem: Using the default Docker driver which doesn't support multi-platform builds.
Solution:
# Create and use a docker-container builder
docker buildx create --name multiarch --driver docker-container --use
docker buildx inspect --bootstrapAlternative: Use single-platform builds with the default driver:
docker buildx use default
docker build -f Dockerfile-base -t fastedge-mcp-server-base:latest .Problem: dial tcp [IPv6]:443: connect: network is unreachable
Solutions:
# Option 1: Use default driver (often has better network compatibility)
docker buildx use default
docker build -f Dockerfile-base -t fastedge-mcp-server-base:latest .
# Option 2: Configure Docker daemon to prefer IPv4
# Edit /etc/docker/daemon.json:
# {
# "ipv6": false,
# "dns": ["8.8.8.8", "8.8.4.4"]
# }
# Then: sudo systemctl restart docker
# Option 3: Use Docker registry mirrors
# Add --registry-mirror flag or configure in daemon.jsonProblem: Warning about build results only staying in cache.
Solution: Always specify output with --load or --push:
# Load into local Docker images
docker buildx build --platform linux/amd64,linux/arm64 -f Dockerfile-base -t fastedge-mcp-server-base:latest --load .
# Push to registry (for CI/CD)
docker buildx build --platform linux/amd64,linux/arm64 -f Dockerfile-base -t fastedge-mcp-server-base:latest --push .- Check buildx status:
docker buildx ls - Verify builder capabilities:
docker buildx inspect - Ensure base images support target architectures
- Test single-platform builds first
- Use
--progress=plainfor detailed build output