From 46ec8bd919bb5e96915b98953246d9b489c4d4da Mon Sep 17 00:00:00 2001 From: Daniil Fedotov Date: Thu, 30 Nov 2023 12:04:37 -0500 Subject: [PATCH] Specify platform as `linux/${ARCH}` when cross-building docker images When using arch specific dockerfiles it's also necessary to specify `--platform` flag. Otherwise dockerx can build arm image with x86_64 binaries, which may not work properly in deployment. --- build/package.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/build/package.sh b/build/package.sh index 135b950c61..f7c0de2f80 100755 --- a/build/package.sh +++ b/build/package.sh @@ -30,7 +30,12 @@ build_licenses_info_image() { elif grep docker /proc/1/cgroup -qa; then mount_cmd="--volumes-from $(grep docker -m 1 /proc/self/cgroup|cut -d/ -f3)" fi + if [ -z "${ARCH:-""}" ]; then + echo "ARCH must be set" + exit 1 + fi docker run --rm ${mount_cmd} \ + --platform linux/${ARCH}\ "ghcr.io/kanisterio/license-extractor:4e0a91a" \ --mode merge \ --source ${src_dir} \ @@ -66,5 +71,5 @@ sed \ -e "s|ARG_ARCH|${ARCH}|g" \ -e "s|ARG_SOURCE_BIN|${SOURCE_BIN}|g" \ Dockerfile.in > .dockerfile-${ARCH} -docker buildx build --push --pull --sbom=true ${baseimagearg:-} --build-arg kanister_version=${VERSION} -t ${IMAGE}:${VERSION} -f .dockerfile-${ARCH} . +docker buildx build --push --pull --sbom=true ${baseimagearg:-} --build-arg kanister_version=${VERSION} -t ${IMAGE}:${VERSION} --platform linux/${ARCH} -f .dockerfile-${ARCH} . docker images -q ${IMAGE}:${VERSION}