Uses a Docker mount cache for storing the Julia depot. The primary advantage of this is that the ~/.julia directory information can persist between builds allowing for Docker builds with lots of dependencies to build much quicker. As part of incorporating this change I need to review how we were building the system image. Specifically, we no longer have the project stage be based off of the sysimage-image stage but instead only copy the information it requires from that stage.
I also experimented with making the use of the cache mount when building the system image to be read-only. If we could enable this flag then Docker would allow concurrent access to one locking writer and multiple readers. However, the sysimage.jl script does write to ~/.julia/logs/manifest_usage.toml which limits the us from utilizing this performance improvement. Additional testing is required to determine how much of a benefit this would provide.
Depends on #68
Uses a Docker mount cache for storing the Julia depot. The primary advantage of this is that the
~/.julia
directory information can persist between builds allowing for Docker builds with lots of dependencies to build much quicker. As part of incorporating this change I need to review how we were building the system image. Specifically, we no longer have theproject
stage be based off of thesysimage-image
stage but instead only copy the information it requires from that stage.I also experimented with making the use of the cache mount when building the system image to be read-only. If we could enable this flag then Docker would allow concurrent access to one locking writer and multiple readers. However, the
sysimage.jl
script does write to~/.julia/logs/manifest_usage.toml
which limits the us from utilizing this performance improvement. Additional testing is required to determine how much of a benefit this would provide.