Docker containers for running BioPerl programs in a reproducible environment
As one of the results of the 2016 Codefest that took place in Orlando, FL, prior to BOSC, there are now “official” Docker images of and for BioPerl, to enable running BioPerl-dependent programs to run in reproducible software environments.
At present, there are two image repositories on Docker Hub (see link above). One, bioperl/bioperl contains a full BioPerl installation, including (presently) the add-on modules Bio::ASN1::EntrezGene and Bio::Phylo. There are currently 3 tags available for the image: ‘latest’ for a build of the latest changes to master of the bioperl-live repo (provided they pass Travis CI); ‘stable’ for the latest stable release published on CPAN (currently 1.6.924); and ‘release-1-6-924’ as a build of the v1.6.924 release (as published under the corresponding release tag in the bioperl-live repo on GitHub). I expect that new stable releases will receive their own tagged build as well. FYI, the ‘latest’ and ‘stable’ images are triggered from successful Travis CI runs to be automatically rebuilt upon corresponding changes to the bioperl-live repo.(*)
These images are build off of the bioperl/bioperl-deps image, the second BioPerl image repo on Docker Hub. This image uses Ubuntu 14.04 as a basis and pre-installs (almost) all dependencies, both mandatory and optional ones. Everyone is welcome to use the bioperl/bioperl-deps image as well if you need a customized build or special version of BioPerl. This includes running the test suite if you’re changing some piece of BioPerl but don’t want to install gazillions of specialized Perl packages onto your laptop (which is where this whole undertaking started at Codefest). 90% of the time to install BioPerl is spent on installing dependencies, so using this image as a basis will not only help harmonize the software environment in which we build and run BioPerl, but also cut down dramatically on installation time.
If you need
- additional dependencies, such as but not limited to SOAP::Lite (the only optional dependency currently not included in the bioperl/bioperl-deps image);
- images with additional BioPerl modules installed, such as bioperl-run, bioperl-db, or others;
- images with tagged versions of BioPerl other than the ones already available, such as earlier stable releases;
- a different OS base images than Ubuntu 14.04;
then please post an issue on the tracker of the Dockerfile repo:
The choices we’ve made are mainly because they seemed reasonable and achievable in a short amount of time. This is as much an open-source project as BioPerl itself. Feedback, contributions, and contributors are most welcome. And in case someone is wondering I’ll be looking into Quay as well.
Thanks to Brad for organizing Codefest every year, and for making it so much fun to attend. And to Chris F for patiently entertaining my occasional rants about Perl, BioPerl, Docker Hub, and the world in general :-)
(*) If you are curious about how this works, see here: https://github.com/bioperl/bioperl-live/pull/175 (there are some subsequent tweaks to this, but this is the gist of it). (BTW you cannot trigger regular expression pattern-based image tags through this mechanism. Yes, Docker Hub does not document this limitation.)