Files
binfmt/README.md
T
2026-05-26 16:21:09 +02:00

84 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🪞 QEMU binfmt Mirror
A mirror of [`tonistiigi/binfmt`](https://github.com/tonistiigi/binfmt) hosted on a self-hosted Gitea Container Registry to speed up multi-platform Docker builds in CI/CD pipelines.
## Why?
When building Docker images for multiple platforms (e.g. `linux/amd64` + `linux/arm64`) on an `amd64`-only runner, QEMU emulation is required. The `setup-qemu-action` pulls `tonistiigi/binfmt` from Docker Hub on every run — which can take **45 minutes** depending on network conditions.
By mirroring the image locally, the pull happens at LAN speed and reduces this step to a **few seconds**.
## Usage
In your Gitea Actions workflow, point `setup-qemu-action` to this mirror:
```yaml
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
image: git.mrunk.de/mrunknownde/binfmt:latest
```
Full example workflow with multi-platform build:
```yaml
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
image: git.mrunk.de/mrunknownde/binfmt:latest
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
cache-binary: true
- name: Build and push
uses: docker/build-push-action@v5
with:
platforms: linux/amd64,linux/arm64
push: true
tags: your-registry/your-image:latest
```
## Keeping the Mirror Up to Date
This repo includes an automated workflow that re-mirrors the image every Monday at 03:00 UTC.
To trigger a manual update:
1. Go to **Actions** in this repository
2. Select **Mirror QEMU Image**
3. Click **Run workflow**
## Mirror Workflow
```yaml
name: Mirror QEMU Image
on:
schedule:
- cron: '0 3 * * 1'
workflow_dispatch:
jobs:
mirror:
runs-on: ubuntu-latest
steps:
- uses: docker/login-action@v3
with:
registry: git.mrunk.de
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Mirror tonistiigi/binfmt
run: |
docker pull tonistiigi/binfmt:latest
docker tag tonistiigi/binfmt:latest git.mrunk.de/mrunknownde/binfmt:latest
docker push git.mrunk.de/mrunknownde/binfmt:latest
```
## Credits
Original image: [`tonistiigi/binfmt`](https://github.com/tonistiigi/binfmt) — MIT License