diff options
author | Geoff Levand <geoff@infradead.org> | 2018-05-21 19:59:39 +0000 |
---|---|---|
committer | Samuel Mendoza-Jonas <sam@mendozajonas.com> | 2018-05-23 11:11:36 +1000 |
commit | 1c45cf6e9393e8c27acfa7c86ea305bcc26ff258 (patch) | |
tree | 4930300e91bacccd1657de6ab3ca643c32d51c85 /docker/build-builder | |
parent | 1214247667d138e2fa1748f4f270e5fc80010377 (diff) | |
download | talos-petitboot-1c45cf6e9393e8c27acfa7c86ea305bcc26ff258.tar.gz talos-petitboot-1c45cf6e9393e8c27acfa7c86ea305bcc26ff258.zip |
docker: Add DOCKER_FROM arg
The dockerfile for each architecture is the same except for the 'FROM' image.
Add a new Dockerfile argument DOCKER_FROM that allows for a commom dockerfile.
If the docker version is older than 17.05 generate a docker file from
the common one.
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
Diffstat (limited to 'docker/build-builder')
-rwxr-xr-x | docker/build-builder | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/docker/build-builder b/docker/build-builder index 8a5015c..04603ad 100755 --- a/docker/build-builder +++ b/docker/build-builder @@ -8,7 +8,8 @@ name="$(basename $0)" source ${TOP_DIR}/docker/builder-include -: ${DOCKER_FILE:="${TOP_DIR}/docker/Dockerfile.builder.$(arch)"} +: ${DOCKER_FILE:="${TOP_DIR}/docker/Dockerfile.builder"} +: ${DOCKER_FROM:="$(docker_from)"} usage () { echo "${name} - Builds a docker image that contains tools for building petitboot." >&2 @@ -22,6 +23,7 @@ usage () { echo " -v --verbose - Verbose execution." >&2 echo "Environment:" >&2 echo " DOCKER_FILE - Default: '${DOCKER_FILE}'" >&2 + echo " DOCKER_FROM - Default: '${DOCKER_FROM}'" >&2 echo " DOCKER_TAG - Default: '${DOCKER_TAG}'" >&2 echo "Examples:" >&2 echo " ${name} -v" @@ -87,6 +89,22 @@ if [[ -n "${tag}" ]]; then exit 0 fi +version () { + echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }' +} + +# Support for docker versions older than 17.05. +# See https://github.com/moby/moby/issues/32457 +if [[ $(version "$(docker version --format '{{.Server.Version}}')") < $(version "17.05") ]]; then + tmp_file="${DOCKER_FILE}.tmp" + trap "rm -f ${tmp_file}" EXIT + + cp -f ${DOCKER_FILE} ${tmp_file} + DOCKER_FILE=${tmp_file} + sed --in-place "s|ARG DOCKER_FROM||" ${tmp_file} + sed --in-place "s|\${DOCKER_FROM}|${DOCKER_FROM}|" ${tmp_file} +fi + if [[ -n "${purge}" ]] && docker inspect --type image ${DOCKER_TAG} >/dev/null 2>/dev/null; then echo "Removing docker image: ${DOCKER_TAG}" >&2 run_cmd "docker rmi --force ${DOCKER_TAG}" @@ -99,6 +117,10 @@ fi echo "Building docker image: ${DOCKER_TAG}" >&2 cd ${TOP_DIR} -run_cmd "docker build --file ${DOCKER_FILE} --tag ${DOCKER_TAG} ." +run_cmd "docker build \ + --file "${DOCKER_FILE}" \ + --build-arg DOCKER_FROM=${DOCKER_FROM} \ + --tag ${DOCKER_TAG} \ + ." show_tag |