Seqera Containers: Always include version numbers in URI
acknowledged
M
Mighty Bird
These two container URIs both contain MultiQC 1.25.1:
community.wave.seqera.io/library/multiqc:1.25.1--dc1968330462e945
. (Bioconda)community.wave.seqera.io/library/pip_multiqc:0bef1f1da1c1ae8e
(Pip)While the version number is preserved for the containers with tools from Bioconda, it is lacking for those from pip. This also applies for containers with multiple packages:
community.wave.seqera.io/library/pip_multiqc-plugins_multiqc:5a119b172a89a538
Since there is no API that allows resolving the contained tool versions from a given URI, it is easy to lose track of them, e.g. when that container is specified in a nf-core module.
Therefore, I suggest to always retain the software versions in the URI:
community.wave.seqera.io/library/pip_multiqc-plugins:1.3.0_multiqc:1.2.5--5a119b172a89a538
This simplifies removing outdated images from large container caches or to consolidate Singularity and Docker images with the exact same tools.
Alternatively, I propose the creation of such a public API. It could be backed by a simple key-value store, that uses the hashed URIs as keys and stores a JSON of the contained tool versions and ideally also the architecture. New entries would be added by Wave/Seqera Containers when a new container image is build.
Phil Ewels
Hi Mighty Bird - thanks for the suggestion! I see where you're coming from, the version number in the conda packages was added as a convenience features. However, it's not something that can be relied upon for a few reasons, the most important being that images with many packages quickly hit an image name length and get truncated, so won't include all package names.
There is functionality to inspect how a container was built (Wave CLI
wave inspect
) and the conda recipe / dockerfile can be retrieved. The relatively recent conda lock file should also contain the exact list of files that were installed into the image, so it should already have tooling to be traceable. See the API docs here: https://wave.seqera.io/openapi/I appreciate that this isn't the easiest thing to navigate, discoverability is something I hope that we can improve upon in the future.
If you'd like to continue / refine this request, please create an issue on GitHub here: https://github.com/seqeralabs/wave
Rob Newman
acknowledged