extend packaging support for Docker/Singularity definition files & images (WIP)#2263
extend packaging support for Docker/Singularity definition files & images (WIP)#2263boegel wants to merge 1 commit intoeasybuilders:developfrom
Conversation
…ages (WIP, initial structure)
|
Hi. I am very interested in this effort and see how other people approach and combine EasyBuild and Docker/Singularity. I have made a similar effort (limited to building EasyBuild and the toolchain goolf-1.7.20 for now) available here |
|
interesting work @stefanoberri, I see some similarities in our builds, your work is more focused on Docker. I think this would be useful for container support with docker. I have also started building some packages in singularity. Please see https://github.com/shahzebsiddiqui/eb-singularity I have an easybuild bootstrap process via Docker and I use RPM to satisfy dependency to speed up the build process. |
|
I discussed this a bit with @shahzebsiddiqui, @jordiblasco and @omula, and we agreed that the first step for this should be to let EasyBuild generate Singularity definition files that use The work done by @shahzebsiddiqui in https://github.com/shahzebsiddiqui/eb-singularity can be leveraged for this, in particular examples like https://github.com/shahzebsiddiqui/eb-singularity/blob/master/singularity/centos/def_files/g/GCCcore/GCCcore-5.4.0.def . Creating the image as a part of Aspects like speeding up the process (by layering images on top of each other or installing RPMs for dependencies rather than building everything from scratch), or trimming down the image size (getting rid of unnecessary (build) dependencies, static linking, build directory outside of image, etc.). can then be looked at later. Potentially useful in this context: https://spack.readthedocs.io/en/latest/workflows.html#using-spack-to-create-docker-images . |
|
superseded by changes in #2332 |
After a nice discussion with a couple of the Singularity developers (@gmkurtzer, @GodloveD, @bauerm97) and some EasyBuilders who have been playing around with the combo of EasyBuild & Singularity (@pescobar, @shahzebsiddiqui), we came up with some ideas to extend the existing packaging support in EasyBuild (cfr. easybuild.readthedocs.io/en/latest/Packaging_support.html) to (Docker &) Singularity containers.
The idea is to add support for both generating container definition files (which can then be fed into
dockerorsingularitythe create the actual container image or uploaded to https://singularityhub.github.io/) and building actual container images by letting EasyBuild call out to the tools itself. Both use cases make sense.Additional things to figure out:
ebbuild the software and then just shove than in a container image, lettingebgenerate RPMs which can then be used to populate the container image, etc.Inspiration can be taken from earlier experiments:
In parallel, the Singularity developers plan to look into supporting EasyBuild as a bootstrap agent in Singularity, which we could then leverage here.
Current status: very much work-in-progress; only the rough structure is in place, actual packaging support (i.e. fleshing out the
package_with_docker&package_with_singularityfunctions) is still TODO.