diff --git a/engine/docker.sh b/engine/docker.sh index 2f7fa149..c0a64c6a 100644 --- a/engine/docker.sh +++ b/engine/docker.sh @@ -24,6 +24,7 @@ DOCKER_IO=$(command -v docker.io) DOCKER="${DOCKER:-${DOCKER_IO:-docker}}" DOCKER_BUILD_OPTS="${DOCKER_BUILD_OPTS:-}" +DOCKER_COMMIT_OPTS="${DOCKER_COMMIT_OPTS:-}" _container_mount_portage='false' _portage_image_processed='false' @@ -31,9 +32,9 @@ _portage_image_processed='false' # Is this engine functional? Called once per engine in current image dependency graph. function validate_engine() { local docker_version - _required_binaries+=" docker" + _required_binaries+=" ${DOCKER}" has_required_binaries - docker_version=$(${DOCKER} "version") || die "Failed to query the docker daemon:\\n${docker_version}" + docker_version=$(${DOCKER} "version") || die "Failed to query ${DOCKER}:\\n${docker_version}" } # Has given image_id all requirements to start the build? Called once per image in current image dependency graph. @@ -228,7 +229,7 @@ function build_image() { _container_mount_portage='false' _status_msg="commit ${run_id} as image ${_current_namespace}/${builder_commit_id}:${IMAGE_TAG}" - pwrap 'nolog' "${DOCKER}" commit "${run_id}" "${_current_namespace}/${builder_commit_id}:${IMAGE_TAG}" \ + pwrap 'nolog' "${DOCKER}" commit ${DOCKER_COMMIT_OPTS} "${run_id}" "${_current_namespace}/${builder_commit_id}:${IMAGE_TAG}" \ || die "${_status_msg}" _status_msg="remove container ${run_id}" @@ -240,15 +241,19 @@ function build_image() { || { msg_error "${_status_msg}"; die; } fi - _status_msg="exec docker build -t ${image_id}:${IMAGE_TAG}" + _status_msg="exec ${DOCKER} build -t ${image_id}:${IMAGE_TAG}" # shellcheck disable=SC2086 pwrap "${DOCKER}" build ${DOCKER_BUILD_OPTS} -t "${image_id}:${IMAGE_TAG}" "${image_path}" || die "${_status_msg}" _status_msg="tag image ${image_id}:latest" pwrap 'nolog' "${DOCKER}" tag "${image_id}:${IMAGE_TAG}" "${image_id}:latest" || die "${_status_msg}" + local prune_args + prune_args=() + [[ "${DOCKER}" == 'docker' ]] && prune_args+=( '-f' ) + [[ "${KUBLER_POSTBUILD_IMAGE_PRUNE}" == 'true' ]] \ - && _status_msg="remove untagged images" && pwrap "${DOCKER}" image prune -f + && _status_msg="remove untagged images" && pwrap "${DOCKER}" image prune "${prune_args[@]}" [[ "${KUBLER_POSTBUILD_VOLUME_PRUNE}" == 'true' ]] \ && _status_msg="remove unused volumes" && pwrap "${DOCKER}" volume prune -f diff --git a/engine/podman.sh b/engine/podman.sh new file mode 100644 index 00000000..100660b7 --- /dev/null +++ b/engine/podman.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# Copyright (c) 2014-2019, Erik Dannenberg +# All rights reserved. + +PODMAN="${PODMAN:-podman}" +PODMAN_BUILD_OPTS="${PODMAN_BUILD_OPTS:---format=docker}" +PODMAN_COMMIT_OPTS="${PODMAN_COMMIT_OPTS:-$PODMAN_BUILD_OPTS}" +DOCKER="${PODMAN}" +DOCKER_BUILD_OPTS="${PODMAN_BUILD_OPTS}" +DOCKER_COMMIT_OPTS="${PODMAN_COMMIT_OPTS}" + +source "${_KUBLER_DIR}/engine/docker.sh" diff --git a/template/podman b/template/podman new file mode 120000 index 00000000..6d0eac4b --- /dev/null +++ b/template/podman @@ -0,0 +1 @@ +docker \ No newline at end of file