From 624d480ccacf9e3b92307add23b333ff1c2d39c5 Mon Sep 17 00:00:00 2001 From: Alex Pyrgiotis Date: Fri, 9 Dec 2022 19:17:52 +0200 Subject: [PATCH] install: Do not create intermediate tarfile for container Skip the creation of the `share/container.tar` file, since it's not used anywhere. Instead, pipe our `docker/podman save` invocations to `gzip` directly, which will compress the tarfile on the fly. This saves both time and disk space. --- install/linux/build-image.sh | 7 ++----- install/macos/build-image.sh | 7 ++----- install/windows/build-image.py | 26 ++++++++++++-------------- 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/install/linux/build-image.sh b/install/linux/build-image.sh index fd2efb0..4d83472 100755 --- a/install/linux/build-image.sh +++ b/install/linux/build-image.sh @@ -3,11 +3,8 @@ echo "Building container image" podman build container --platform linux/amd64 --tag dangerzone.rocks/dangerzone -echo "Saving container image" -podman save dangerzone.rocks/dangerzone -o share/container.tar - -echo "Compressing container image" -gzip -f share/container.tar +echo "Saving and compressing container image" +podman save dangerzone.rocks/dangerzone | gzip > share/container.tar.gz echo "Looking up the image id" podman image ls dangerzone.rocks/dangerzone | grep "dangerzone.rocks/dangerzone" | tr -s ' ' | cut -d' ' -f3 > share/image-id.txt diff --git a/install/macos/build-image.sh b/install/macos/build-image.sh index 765421b..f36cdcf 100755 --- a/install/macos/build-image.sh +++ b/install/macos/build-image.sh @@ -3,11 +3,8 @@ echo "Building container image" docker build container --platform linux/amd64 --tag dangerzone.rocks/dangerzone -echo "Saving container image" -docker save dangerzone.rocks/dangerzone -o share/container.tar - -echo "Compressing container image" -gzip -f share/container.tar +echo "Saving and compressing container image" +docker save dangerzone.rocks/dangerzone | gzip > share/container.tar.gz echo "Looking up the image id" docker image ls dangerzone.rocks/dangerzone | grep "dangerzone.rocks/dangerzone" | tr -s ' ' | cut -d' ' -f3 > share/image-id.txt diff --git a/install/windows/build-image.py b/install/windows/build-image.py index 14e1983..4fb5f8c 100644 --- a/install/windows/build-image.py +++ b/install/windows/build-image.py @@ -18,28 +18,26 @@ def main(): ) print("Saving container image") - subprocess.run( + cmd = subprocess.Popen( [ "docker", "save", "dangerzone.rocks/dangerzone", - "-o", - "share/container.tar", - ] + ], + stdout=subprocess.PIPE, ) print("Compressing container image") - chunk_size = 1024 - with open("share/container.tar", "rb") as f: - with gzip.open("share/container.tar.gz", "wb") as gzip_f: - while True: - chunk = f.read(chunk_size) - if len(chunk) > 0: - gzip_f.write(chunk) - else: - break + chunk_size = 4 << 12 + with gzip.open("share/container.tar.gz", "wb") as gzip_f: + while True: + chunk = cmd.stdout.read(chunk_size) + if len(chunk) > 0: + gzip_f.write(chunk) + else: + break - os.remove("share/container.tar") + cmd.wait(5) print("Looking up the image id") image_id = subprocess.check_output(