Minify Docker images
Description
Currently, it takes a long time to pull the Docker images required to run the workflow. While this is less of a problem in actual real-world usage of the workflow (because images are likely going to be cached), it slows down testing on the VM considerably, as it cleans up images after every run (rough estimate: >80% of time required for tests is only for pulling/converting images).
Moreover, large images increase the likelihood of connection issues with Docker Hub (see #63 (closed)).
Possible solution
There are many online resources explaining how image sizes can be considerably reduced (see this example), and the strategies include:
- choosing a small base image (e.g., Alpine)
- using multi-stage builds
- cleaning caches
- only keep what's needed (no additional virtualization via
conda
,virtualenv
etc.)
Throwing out unnecessary bloat also makes containers more secure, as the attached surface gets smaller.
To do
Reduce the size of the following images and try to remember to minify any images used in the workflow in the future:
-
zavolab/cutadapt:1.16
-
zavolab/fastqc:0.11.8
=> minifiedv0.11.9
-
zavolab/gtf_transcript_type_to_bed12:0.1.0
-
zavolab/kallisto:0.46.1
-
zavolab/salmon:0.11.0
=> minifiedv1.1.0
-
zavolab/samtools:1.8
=> minifiedv1.10
-
zavolab/star:2.6.0a
=> minifiedv2.7.3a
-
zavolab/tin_score_calculation:0.1.0