README.md hinzugefügt
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
# 🪞 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 **4–5 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
|
||||
Reference in New Issue
Block a user