Multi-stage build process
This MR alters the internals of the build process to separate the building of a custom "builder image" from the building of the final "runtime image". Additionally the main build script incorporates logic to automatically add the -c/--copy
and --incremental
options when appropriate.
The purpose of the changes is two-fold and mainly to improve the developer experience. First, normally you should only need to run build.sh
without options to build in the desired way. Second, the builder image only needs to be rebuilt when not present or when underlying app dependencies (e.g., Linux packages) change or need to be updated. In combination with automatically applying the --incremental
option, re-using a pre-built builder saves time in iterative development. Note that the builder image can still be rebuilt separately bu running the build-builder.sh
script.
A couple of minor additions: dev.sh
will detect if a build needs to be run, so no need to manually build first. There is also a new clean.sh
script that deletes all rdr-*
volumes and images -- RUN WITH CAUTION!