Skip to content
Snippets Groups Projects
Commit a87fcc16 authored by Marcel Waldvogel's avatar Marcel Waldvogel Committed by Daniel Salzman
Browse files

docker: build multiarch images

Modified by Daniel Salzman
parent df158edc
Branches
Tags
No related merge requests found
Pipeline #76945 failed with stages
in 3 hours, 5 minutes, and 27 seconds
# Based on https://netfuture.ch/2020/05/multi-arch-docker-image-easy/
#
# Example: make -f Makefile.docker docker-multiarch (TAG=latest)
REGISTRY = cznic
BASETAG = ${REGISTRY}/knot
PLATFORMS = linux/amd64,linux/arm/v7,linux/arm64/v8
GITHASH = $(shell git rev-parse --short HEAD)
GITBRANCH = $(shell git rev-parse --abbrev-ref HEAD)
BRANCHTAG = $(shell [ -n "${GITBRANCH}" ] && echo "-t ${BASETAG}:${GITBRANCH}" || echo "")
EXTRATAG = $(shell [ -n "${TAG}" ] && echo "-t ${BASETAG}:${TAG}" || echo "")
LABEL = $(shell [ -n "${GITHASH}" ] && echo "--label knot.git.hash=${GITHASH}" || echo "")
BUILDXDETECT = ${HOME}/.docker/cli-plugins/docker-buildx
QEMUDETECT = /proc/sys/fs/binfmt_misc/qemu-m68k
docker-multiarch: qemu buildx docker-multiarch-builder
# docker login
docker buildx build --builder docker-multiarch --pull --push ${LABEL} \
--platform ${PLATFORMS} ${BRANCHTAG} ${EXTRATAG} ..
qemu: ${QEMUDETECT}
${QEMUDETECT}:
docker pull multiarch/qemu-user-static
docker run --privileged multiarch/qemu-user-static --reset -p yes
docker ps -a | sed -n 's, *multiarch/qemu-user-static.*,,p' \
| (xargs docker rm 2>&1 || \
echo "Cannot remove docker container on ZFS; retry after next reboot") \
| grep -v 'dataset is busy'
buildx: ${BUILDXDETECT}
${BUILDXDETECT}:
@echo
# Output of `uname -m` is too different
@echo '*** `docker buildx` missing. Install binary for this machine architecture'
@echo '*** from `https://github.com/docker/buildx/releases/latest`'
@echo '*** to `~/.docker/cli-plugins/docker-buildx` and `chmod +x` it.'
@echo
@exit 1
docker-multiarch-builder: qemu buildx
if ! docker buildx ls | grep -w docker-multiarch > /dev/null; then \
docker buildx create --name docker-multiarch && \
docker buildx inspect --builder docker-multiarch --bootstrap; \
fi
.PHONY: qemu buildx docker-multiarch docker-multiarch-builder
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment