Skip to content

Commit

Permalink
TMP merge master to make the docker actually work
Browse files Browse the repository at this point in the history
  • Loading branch information
vcunat committed Nov 1, 2024
2 parents 8447b9e + 374e31d commit 69ae702
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ RUN cd /source && \
git submodule update --init --recursive && \
git config --global user.name "Docker Build" && \
git config --global user.email docker-build@knot-resolver && \
sed s/knot-resolver/root/g -i meson_options.txt && git commit -a -m TMP && \
/root/.local/bin/apkg build-dep -y && \
/root/.local/bin/apkg build

Expand Down
48 changes: 48 additions & 0 deletions scripts/Makefile.docker
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# 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

# https://stackoverflow.com/a/324782
ROOT_DIR:=$(dir $(realpath $(lastword $(MAKEFILE_LIST))))/..

docker-multiarch: qemu buildx docker-multiarch-builder
docker login
docker buildx build --no-cache --builder docker-multiarch --pull --push \
--platform ${PLATFORMS} ${RELTAG} ${ROOT_DIR}

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 comments on commit 69ae702

Please sign in to comment.