From d700a9f1b8b5e39c53f57c21d592e5288d09f91c Mon Sep 17 00:00:00 2001 From: Valentin Lab Date: Thu, 12 Sep 2019 20:43:00 +0200 Subject: [PATCH] new: added ``docker_image_export_dir``, ``service_base_image_export_dir`` helper function This implements a missing feature in docker to allow to export some part of a docker image. --- bin/compose-core | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/bin/compose-core b/bin/compose-core index ac2aa05..0da0ea8 100755 --- a/bin/compose-core +++ b/bin/compose-core @@ -495,6 +495,30 @@ image_exposed_ports_0() { } export -f image_exposed_ports_0 + +## feature not yet included in docker: https://github.com/moby/moby/issues/16079 +docker_image_export_dir() { + local image="$1" src="$2" dst="$3" container_id + ( + container_id=$(docker create "$image") || exit 1 + trap_add EXIT,ERR "docker rm \"$container_id\" >/dev/null" + docker cp "$container_id":"$src" "$dst" + ) +} +export -f docker_image_export_dir + + +service_base_image_export_dir() { + local service="$1" src="$2" dst="$3" base_image + shift + base_image=$(service_base_docker_image "$service") || return 1 + if ! docker_has_image "$base_image"; then + docker pull "$base_image" + fi + docker_image_export_dir "$base_image" "$src" "$dst" +} +export -f service_base_image_export_dir + ## ## Generic ##