[projects/cleanbuild] Use build cache to speedup local docker image rebuilds

glen glen at pld-linux.org
Sun Aug 29 15:57:45 CEST 2021


commit 2801d0f4e321a65b416e20025399ede0bf7aa987
Author: Elan Ruusamäe <glen at delfi.ee>
Date:   Sun Aug 29 15:41:42 2021 +0300

    Use build cache to speedup local docker image rebuilds

 docker/Dockerfile      | 22 +++++++++++++++-------
 docker/build-docker.sh | 12 ++++++++----
 2 files changed, 23 insertions(+), 11 deletions(-)
---
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 49733ef..75b54da 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,4 +1,11 @@
-# create base image for cleanbuild
+# syntax = docker/dockerfile:experimental
+#
+# Requires Docker v18.06 or later and BuildKit mode to use cache mount
+# Docker v18.06 also requires the daemon to be running in experimental mode.
+#
+# $ DOCKER_BUILDKIT=1 docker build .
+#
+# See https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/syntax.md
 
 FROM registry.gitlab.com/pld-linux/pld AS base
 
@@ -15,9 +22,12 @@ COPY sudoers ./etc/sudoers.d/builder
 RUN chmod -R a+rX,og-w .
 
 FROM base
-RUN set -x \
+RUN --mount=type=cache,id=poldek,target=/var/cache/poldek \
+	set -x \
+	# enable to preserve downloaded packages
+	&& poldek-config keep_downloads yes \
 	# first upgrade to latest
-	&& poldek --upgrade-dist \
+	&& poldek --up --upgrade-dist \
 	# install build deps
 	&& poldek -u \
 		binutils \
@@ -34,11 +44,9 @@ RUN set -x \
 		util-linux \
 	# this will setup builder user
 	&& poldek -u pld-builder-chroot \
-	# configures empty dir
+	# useless, as it configures empty dir
 	&& rm /etc/poldek/repos.d/pld-builder.conf \
-	# preserve downloaded packages
-	&& poldek-config keep_downloads yes \
-	&& poldek --clean-whole
+	&& exit 0
 
 COPY --from=dist /dist /
 
diff --git a/docker/build-docker.sh b/docker/build-docker.sh
index ebfc503..bba83dc 100755
--- a/docker/build-docker.sh
+++ b/docker/build-docker.sh
@@ -1,8 +1,12 @@
 #!/bin/sh
-# use this script to build the image locally
-set -e
-
-export DOCKER_BUILDKIT=${DOCKER_BUILDKIT:-1}
+# Use this script to build the image locally
+set -eu
 
 image=registry.gitlab.com/pld-linux/cleanbuild
+
+script=$(readlink -f "$0")
+dir=$(dirname "$0")
+cd "$dir"
+
+export DOCKER_BUILDKIT=1
 docker build --pull -t $image .
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/projects/cleanbuild.git/commitdiff/eb07c8d6582cadef8a50e97c53963501c981f4e9



More information about the pld-cvs-commit mailing list