Docker is the ideal way of deploying applications such as:
- Web applications that need a proxy server, database and application code, and a consistent operating environment
- Examples: Galaxy (a bioinformatics platform), GitLab (a git host), Ghost (blogging platform)
- Analysis pipelines or pipeline stages that require many runtimes (Python, Perl, Java etc.) and many tools (Samtools, GATK, VEP)
- Examples: Pipelines written in CWL, WDL, Snakemake, Nextflow
- Testing and continuous integration, allowing your tests to run in a consistent environment with a very precisely defined set of dependencies
- Examples: Jenkins, Drone CI
- Complex or fragile applications that would be difficult to compile locally
- Examples: PennCNV, hap.py
- Self-contained analyses that need a specific and reproducible environment