From 81c907b4bf22bc4bdfc2deeb2838b3f3366f3bf7 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Thu, 26 Nov 2020 09:47:30 -0800 Subject: [PATCH] fix: docker buildx support for multiplatform build (#10983) --- Dockerfile.arm.release | 34 ---------------------------------- Dockerfile.arm64.release | 35 ----------------------------------- Dockerfile.ppc64le.release | 34 ---------------------------------- Dockerfile.release | 15 ++++++++++----- Dockerfile.s390x.release | 34 ---------------------------------- docker-buildx.sh | 17 +++++++++++++++++ dockerscripts/verify-minio.sh | 4 ++++ 7 files changed, 31 insertions(+), 142 deletions(-) delete mode 100644 Dockerfile.arm.release delete mode 100644 Dockerfile.arm64.release delete mode 100644 Dockerfile.ppc64le.release delete mode 100644 Dockerfile.s390x.release create mode 100755 docker-buildx.sh diff --git a/Dockerfile.arm.release b/Dockerfile.arm.release deleted file mode 100644 index 056dadd55..000000000 --- a/Dockerfile.arm.release +++ /dev/null @@ -1,34 +0,0 @@ -FROM multiarch/qemu-user-static:x86_64-arm as qemu -FROM arm32v7/alpine:3.12 - -LABEL maintainer="MinIO Inc " - -COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin - -ENV MINIO_ACCESS_KEY_FILE=access_key \ - MINIO_SECRET_KEY_FILE=secret_key \ - MINIO_KMS_MASTER_KEY_FILE=kms_master_key \ - MINIO_SSE_MASTER_KEY_FILE=sse_master_key \ - MINIO_UPDATE_MINISIGN_PUBKEY="RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav" - -RUN \ - echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories && \ - apk update && apk add --no-cache ca-certificates 'curl>7.61.0' 'su-exec>=0.2' minisign && \ - echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf && \ - curl -s -q https://dl.min.io/server/minio/release/linux-arm/minio -o /usr/bin/minio && \ - curl -s -q https://dl.min.io/server/minio/release/linux-arm/minio.sha256sum -o /usr/bin/minio.sha256sum && \ - curl -s -q https://dl.min.io/server/minio/release/linux-arm/minio.minisig -o /usr/bin/minio.minisig && \ - curl -s -q https://raw.githubusercontent.com/minio/minio/master/dockerscripts/verify-minio.sh -o /usr/bin/verify-minio.sh && \ - curl -s -q https://raw.githubusercontent.com/minio/minio/master/dockerscripts/docker-entrypoint.sh -o /usr/bin/docker-entrypoint.sh && \ - chmod +x /usr/bin/minio && \ - chmod +x /usr/bin/docker-entrypoint.sh && \ - chmod +x /usr/bin/verify-minio.sh && \ - curl -s -q -O https://raw.githubusercontent.com/minio/minio/master/CREDITS - -EXPOSE 9000 - -ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"] - -VOLUME ["/data"] - -CMD ["minio"] diff --git a/Dockerfile.arm64.release b/Dockerfile.arm64.release deleted file mode 100644 index ab0704f4a..000000000 --- a/Dockerfile.arm64.release +++ /dev/null @@ -1,35 +0,0 @@ -FROM multiarch/qemu-user-static:x86_64-aarch64 as qemu -FROM arm64v8/alpine:3.12 - -LABEL maintainer="MinIO Inc " - -COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin - -ENV MINIO_ACCESS_KEY_FILE=access_key \ - MINIO_SECRET_KEY_FILE=secret_key \ - MINIO_KMS_MASTER_KEY_FILE=kms_master_key \ - MINIO_SSE_MASTER_KEY_FILE=sse_master_key \ - MINIO_UPDATE_MINISIGN_PUBKEY="RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav" - -RUN \ - echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories && \ - apk update && apk add --no-cache ca-certificates 'curl>7.61.0' 'su-exec>=0.2' minisign && \ - echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf && \ - curl -s -q https://dl.min.io/server/minio/release/linux-arm64/minio -o /usr/bin/minio && \ - curl -s -q https://dl.min.io/server/minio/release/linux-arm64/minio.sha256sum -o /usr/bin/minio.sha256sum && \ - curl -s -q https://dl.min.io/server/minio/release/linux-arm64/minio.minisig -o /usr/bin/minio.minisig && \ - curl -s -q https://raw.githubusercontent.com/minio/minio/master/dockerscripts/verify-minio.sh -o /usr/bin/verify-minio.sh && \ - curl -s -q https://raw.githubusercontent.com/minio/minio/master/dockerscripts/docker-entrypoint.sh -o /usr/bin/docker-entrypoint.sh && \ - chmod +x /usr/bin/minio && \ - chmod +x /usr/bin/docker-entrypoint.sh && \ - chmod +x /usr/bin/verify-minio.sh && \ - curl -s -q -O https://raw.githubusercontent.com/minio/minio/master/CREDITS && \ - /usr/bin/verify-minio.sh - -EXPOSE 9000 - -ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"] - -VOLUME ["/data"] - -CMD ["minio"] diff --git a/Dockerfile.ppc64le.release b/Dockerfile.ppc64le.release deleted file mode 100644 index 407c8e744..000000000 --- a/Dockerfile.ppc64le.release +++ /dev/null @@ -1,34 +0,0 @@ -FROM multiarch/qemu-user-static:x86_64-ppc64le as qemu -FROM ppc64le/alpine:3.12 - -LABEL maintainer="MinIO Inc " - -COPY --from=qemu /usr/bin/qemu-ppc64le-static /usr/bin - -ENV MINIO_ACCESS_KEY_FILE=access_key \ - MINIO_SECRET_KEY_FILE=secret_key \ - MINIO_KMS_MASTER_KEY_FILE=kms_master_key \ - MINIO_SSE_MASTER_KEY_FILE=sse_master_key \ - MINIO_UPDATE_MINISIGN_PUBKEY="RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav" - -RUN \ - echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories && \ - apk update && apk add --no-cache ca-certificates 'curl>7.61.0' 'su-exec>=0.2' minisign && \ - curl -s -q https://dl.min.io/server/minio/release/linux-ppc64le/minio -o /usr/bin/minio && \ - curl -s -q https://dl.min.io/server/minio/release/linux-ppc64le/minio.sha256sum -o /usr/bin/minio.sha256sum && \ - curl -s -q https://dl.min.io/server/minio/release/linux-ppc64le/minio.minisig -o /usr/bin/minio.minisig && \ - curl -s -q https://raw.githubusercontent.com/minio/minio/master/dockerscripts/verify-minio.sh -o /usr/bin/verify-minio.sh && \ - curl -s -q https://raw.githubusercontent.com/minio/minio/master/dockerscripts/docker-entrypoint.sh -o /usr/bin/docker-entrypoint.sh && \ - chmod +x /usr/bin/minio && \ - chmod +x /usr/bin/docker-entrypoint.sh && \ - chmod +x /usr/bin/verify-minio.sh && \ - curl -s -q -O https://raw.githubusercontent.com/minio/minio/master/CREDITS && \ - /usr/bin/verify-minio.sh - -EXPOSE 9000 - -ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"] - -VOLUME ["/data"] - -CMD ["minio"] diff --git a/Dockerfile.release b/Dockerfile.release index eac14ec0e..ab5b429a8 100644 --- a/Dockerfile.release +++ b/Dockerfile.release @@ -1,5 +1,7 @@ FROM alpine:3.12 +ARG TARGETARCH + LABEL maintainer="MinIO Inc " ENV MINIO_ACCESS_KEY_FILE=access_key \ @@ -8,15 +10,18 @@ ENV MINIO_ACCESS_KEY_FILE=access_key \ MINIO_SSE_MASTER_KEY_FILE=sse_master_key \ MINIO_UPDATE_MINISIGN_PUBKEY="RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav" +COPY dockerscripts/verify-minio.sh /usr/bin/verify-minio.sh +COPY dockerscripts/docker-entrypoint.sh /usr/bin/docker-entrypoint.sh +COPY CREDITS /licenses/CREDITS +COPY LICENSE /licenses/LICENSE + RUN \ echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories && \ apk update && apk add --no-cache ca-certificates 'curl>7.61.0' 'su-exec>=0.2' minisign && \ echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf && \ - curl -s -q https://dl.min.io/server/minio/release/linux-amd64/minio -o /usr/bin/minio && \ - curl -s -q https://dl.min.io/server/minio/release/linux-amd64/minio.sha256sum -o /usr/bin/minio.sha256sum && \ - curl -s -q https://dl.min.io/server/minio/release/linux-amd64/minio.minisig -o /usr/bin/minio.minisig && \ - curl -s -q https://raw.githubusercontent.com/minio/minio/master/dockerscripts/verify-minio.sh -o /usr/bin/verify-minio.sh && \ - curl -s -q https://raw.githubusercontent.com/minio/minio/master/dockerscripts/docker-entrypoint.sh -o /usr/bin/docker-entrypoint.sh && \ + curl -s -q https://dl.min.io/server/minio/release/linux-${TARGETARCH}/minio -o /usr/bin/minio && \ + curl -s -q https://dl.min.io/server/minio/release/linux-${TARGETARCH}/minio.sha256sum -o /usr/bin/minio.sha256sum && \ + curl -s -q https://dl.min.io/server/minio/release/linux-${TARGETARCH}/minio.minisig -o /usr/bin/minio.minisig && \ chmod +x /usr/bin/minio && \ chmod +x /usr/bin/docker-entrypoint.sh && \ chmod +x /usr/bin/verify-minio.sh && \ diff --git a/Dockerfile.s390x.release b/Dockerfile.s390x.release deleted file mode 100644 index 16b60070f..000000000 --- a/Dockerfile.s390x.release +++ /dev/null @@ -1,34 +0,0 @@ -FROM multiarch/qemu-user-static:x86_64-s390x as qemu -FROM s390x/alpine:3.12 - -LABEL maintainer="MinIO Inc " - -COPY --from=qemu /usr/bin/qemu-s390x-static /usr/bin - -ENV MINIO_ACCESS_KEY_FILE=access_key \ - MINIO_SECRET_KEY_FILE=secret_key \ - MINIO_KMS_MASTER_KEY_FILE=kms_master_key \ - MINIO_SSE_MASTER_KEY_FILE=sse_master_key \ - MINIO_UPDATE_MINISIGN_PUBKEY="RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav" - -RUN \ - echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories && \ - apk update && apk add --no-cache ca-certificates 'curl>7.61.0' 'su-exec>=0.2' minisign && \ - curl -s -q https://dl.min.io/server/minio/release/linux-s390x/minio -o /usr/bin/minio && \ - curl -s -q https://dl.min.io/server/minio/release/linux-s390x/minio.sha256sum -o /usr/bin/minio.sha256sum && \ - curl -s -q https://dl.min.io/server/minio/release/linux-s390x/minio.minisig -o /usr/bin/minio.minisig && \ - curl -s -q https://raw.githubusercontent.com/minio/minio/master/dockerscripts/verify-minio.sh -o /usr/bin/verify-minio.sh && \ - curl -s -q https://raw.githubusercontent.com/minio/minio/master/dockerscripts/docker-entrypoint.sh -o /usr/bin/docker-entrypoint.sh && \ - chmod +x /usr/bin/minio && \ - chmod +x /usr/bin/docker-entrypoint.sh && \ - chmod +x /usr/bin/verify-minio.sh && \ - curl -s -q -O https://raw.githubusercontent.com/minio/minio/master/CREDITS && \ - /usr/bin/verify-minio.sh - -EXPOSE 9000 - -ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"] - -VOLUME ["/data"] - -CMD ["minio"] diff --git a/docker-buildx.sh b/docker-buildx.sh new file mode 100755 index 000000000..cbbf41398 --- /dev/null +++ b/docker-buildx.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +set -x + +sudo sysctl net.ipv6.conf.wlp59s0.disable_ipv6=1 + +release=$(git describe --abbrev=0 --tags) +sudo docker buildx build --push --no-cache -t "minio/minio:latest" \ + --platform=linux/arm,linux/arm64,linux/amd64,linux/ppc64le,linux/s390x \ + -f Dockerfile.release . + +sudo docker buildx build --push -t "minio/minio:${release}" \ + --platform=linux/arm,linux/arm64,linux/amd64,linux/ppc64le,linux/s390x \ + -f Dockerfile.release . + +sudo sysctl net.ipv6.conf.wlp59s0.disable_ipv6=0 + diff --git a/dockerscripts/verify-minio.sh b/dockerscripts/verify-minio.sh index ad1369ee6..17b2bbfc8 100755 --- a/dockerscripts/verify-minio.sh +++ b/dockerscripts/verify-minio.sh @@ -28,6 +28,10 @@ verify_sha256sum() { } verify_signature() { + if [ "${TARGETARCH}" = "arm" ]; then + echo "ignoring verification of binary signature" + return + fi echo "verifying binary signature" minisign -VQm /usr/bin/minio -P RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav }