Skip to content

Add multi-architecture Docker image build support#3

Merged
r33drichards merged 3 commits into
masterfrom
claude/setup-mcp-docker-pGdDS
Jan 25, 2026
Merged

Add multi-architecture Docker image build support#3
r33drichards merged 3 commits into
masterfrom
claude/setup-mcp-docker-pGdDS

Conversation

@r33drichards

Copy link
Copy Markdown
Owner

Summary

This PR refactors the Docker build and push workflow to support building and publishing multi-architecture (amd64 and arm64) Docker images with proper manifest management.

Key Changes

  • Split build job into matrix strategy: The single docker job is now a build job that runs on multiple architectures (amd64 on ubuntu-latest and arm64 on ubuntu-24.04-arm) using GitHub Actions matrix strategy
  • Architecture-specific image tagging: Docker images are now tagged with architecture suffixes (e.g., sha-amd64, sha-arm64) to distinguish per-architecture builds
  • New manifest job: Added a separate manifest job that runs after all architecture builds complete to create and push multi-architecture manifests
    • Creates a manifest combining both amd64 and arm64 images tagged with the commit SHA
    • Creates and pushes a latest manifest when pushing to main/master branches
    • Properly annotates each manifest entry with correct OS and architecture metadata

Implementation Details

  • The build job uses a matrix with three variables per architecture: arch, runner, and platform
  • The manifest job depends on the build job completing successfully via needs: build
  • Docker manifest commands properly annotate each architecture variant before pushing
  • Maintains backward compatibility with existing tagging scheme while adding multi-arch support

- Use matrix strategy to build on both x86_64 and arm64 runners
- Push architecture-specific images with -amd64 and -arm64 tags
- Create Docker manifest combining both architectures
- Support both commit SHA and latest tags as multi-arch manifests
- Remove push-only restriction from manifest job so PRs also get multi-arch images
- Add new comment job that posts Docker image tags on PRs
- Use peter-evans/find-comment and create-or-update-comment to update existing comment instead of spamming
- Include ready-to-use docker pull and docker run commands in comment
@github-actions

github-actions Bot commented Jan 25, 2026

Copy link
Copy Markdown

🐳 Docker Image Ready

Multi-arch image (recommended):

docker pull wholelottahoopla/mcp-exec:000f570cec6ee8b2f37f1a421dcf21e3b9c2bf32

Run with HTTP server:

docker run -d -p 8080:8080 -v /var/lib/mcp-exec:/logs \
  wholelottahoopla/mcp-exec:000f570cec6ee8b2f37f1a421dcf21e3b9c2bf32 \
  --http-port 8080 --bind-address 0.0.0.0 --directory-path /logs
Architecture-specific tags

AMD64:

docker pull wholelottahoopla/mcp-exec:000f570cec6ee8b2f37f1a421dcf21e3b9c2bf32-amd64

ARM64:

docker pull wholelottahoopla/mcp-exec:000f570cec6ee8b2f37f1a421dcf21e3b9c2bf32-arm64

Built from commit 000f570

Cmd gets replaced when passing arguments to docker run, while
Entrypoint gets arguments appended. This allows users to pass
CLI flags like --http-port directly to the container.
@r33drichards r33drichards merged commit dd0a435 into master Jan 25, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants