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 => minified v0.11.9
  • zavolab/gtf_transcript_type_to_bed12:0.1.0
  • zavolab/kallisto:0.46.1
  • zavolab/salmon:0.11.0 => minified v1.1.0
  • zavolab/samtools:1.8 => minified v1.10
  • zavolab/star:2.6.0a => minified v2.7.3a
  • zavolab/tin_score_calculation:0.1.0
Edited by Alex Kanitz
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information