From 0c8988aa078f40d079f96d0824a61de3d3838f04 Mon Sep 17 00:00:00 2001 From: Geoff Levand Date: Fri, 21 Apr 2017 10:04:41 -0700 Subject: [PATCH] build-docker: Updates for multi-arch release o Set -e to abort script if a command fails. o Allow custom docker 'TAG' from the environment. o Move arch suffix to version to allow all images to be put into a single repository. o Enable cross builds. When doing cross builds where the host and target architectures are different 'RUN mkdir' will fail since the target container cannot be run on the host. To work around this, create the directories in build-docker, then use ADD in the Dockerfile. o Add Dockerfile-release.arm64 Signed-off-by: Geoff Levand --- Dockerfile-release.arm64 | 11 +++++++++++ Dockerfile-release.ppc64le | 4 ++-- scripts/build-docker | 12 ++++++++---- 3 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 Dockerfile-release.arm64 diff --git a/Dockerfile-release.arm64 b/Dockerfile-release.arm64 new file mode 100644 index 000000000..d8816e58d --- /dev/null +++ b/Dockerfile-release.arm64 @@ -0,0 +1,11 @@ +FROM aarch64/ubuntu:16.04 + +ADD etcd /usr/local/bin/ +ADD etcdctl /usr/local/bin/ +ADD var/etcd /var/etcd +ADD var/lib/etcd /var/lib/etcd + +EXPOSE 2379 2380 + +# Define default command. +CMD ["/usr/local/bin/etcd"] diff --git a/Dockerfile-release.ppc64le b/Dockerfile-release.ppc64le index 06365c8bc..2fb02c412 100644 --- a/Dockerfile-release.ppc64le +++ b/Dockerfile-release.ppc64le @@ -2,8 +2,8 @@ FROM ppc64le/ubuntu:16.04 ADD etcd /usr/local/bin/ ADD etcdctl /usr/local/bin/ -RUN mkdir -p /var/etcd/ -RUN mkdir -p /var/lib/etcd/ +ADD var/etcd /var/etcd +ADD var/lib/etcd /var/lib/etcd EXPOSE 2379 2380 diff --git a/scripts/build-docker b/scripts/build-docker index 44641322f..5c0132136 100755 --- a/scripts/build-docker +++ b/scripts/build-docker @@ -1,13 +1,16 @@ #!/usr/bin/env bash +set -e + if [ "$#" -ne 1 ]; then echo "Usage: $0 VERSION" >&2 exit 1 fi +VERSION=${1} ARCH=$(go env GOARCH) DOCKERFILE="Dockerfile-release" -TAG="quay.io/coreos/etcd" +: ${TAG:="quay.io/coreos/etcd"} if [ -z ${BINARYDIR} ]; then RELEASE="etcd-${1}"-`go env GOOS`-`go env GOARCH` @@ -24,7 +27,7 @@ fi if [ ${ARCH} != "amd64" ]; then DOCKERFILE+=".${ARCH}" - TAG+="-${ARCH}" + VERSION+="-${ARCH}" fi BINARYDIR=${BINARYDIR:-.} @@ -32,9 +35,10 @@ BUILDDIR=${BUILDDIR:-.} IMAGEDIR=${BUILDDIR}/image-docker -mkdir -p ${IMAGEDIR} +mkdir -p ${IMAGEDIR}/var/etcd +mkdir -p ${IMAGEDIR}/var/lib/etcd cp ${BINARYDIR}/etcd ${BINARYDIR}/etcdctl ${IMAGEDIR} cat ./${DOCKERFILE} > ${IMAGEDIR}/Dockerfile -docker build -t ${TAG}:${1} ${IMAGEDIR} +docker build -t ${TAG}:${VERSION} ${IMAGEDIR}