From 2756ffb60874c5194df3ad1bc0f959806b223d5c Mon Sep 17 00:00:00 2001 From: Daniil Fedotov Date: Wed, 6 Dec 2023 14:47:39 -0500 Subject: [PATCH] Specify platform as `linux/${ARCH}` when cross-building docker images (#2503) 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. Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- 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}