From fb6c30cd4913f7785e024876b764fe1e27bd7717 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ale=C5=A1=20Mr=C3=A1zek?= Date: Wed, 30 Oct 2024 11:47:15 +0100 Subject: [PATCH] scripts: created Makefile.docker --- scripts/Makefile.docker | 45 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 scripts/Makefile.docker diff --git a/scripts/Makefile.docker b/scripts/Makefile.docker new file mode 100644 index 000000000..f32386e60 --- /dev/null +++ b/scripts/Makefile.docker @@ -0,0 +1,45 @@ +# Based on https://netfuture.ch/2020/05/multi-arch-docker-image-easy/ +# +# Example: make -f Makefile.docker docker-multiarch + +REGISTRY = cznic +BASETAG = ${REGISTRY}/knot-resolver +PLATFORMS = linux/amd64,linux/arm/v7,linux/arm64/v8 + +RELEASE = $(shell git describe --abbrev=0 --exact-match) +RELTAG = $(shell [ -n "${RELEASE}" ] && echo "-t ${BASETAG}:${RELEASE}" || 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 --no-cache --builder docker-multiarch --pull --push \ + --platform ${PLATFORMS} ${RELTAG} .. + +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 \ No newline at end of file -- 2.47.2