Docker is the recommended deployment path for macOS and Windows hosts, or for any Linux environment where installing Conda and Singularity system-wide is impractical. The repository ships aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/BDB-Genomics/atacseq-pipeline/llms.txt
Use this file to discover all available pages before exploring further.
Dockerfile that builds a lightweight host runner image based on mambaorg/micromamba:1.5-bullseye-slim. This image contains only Snakemake and Python — individual rule dependencies (Bowtie2, MACS2, ArchR, and so on) are still downloaded and cached dynamically by Snakemake at runtime through its --use-conda mechanism, exactly as they are in a bare-metal Conda installation.
What the Dockerfile Does
envs/main.yaml provides the host runner dependencies only — Snakemake and Python. It does not bundle Bowtie2, MACS2, ArchR, or any analysis tool. Those are resolved by Snakemake at job execution time via --use-conda.Step-by-Step Setup
Run this once from the repository root. Docker caches the micromamba installation layer, so subsequent rebuilds after code changes are fast.
Ensure your
config.yaml, sample sheet (data/fastp/samples.tsv), and reference data are present in the current directory. Docker mounts the current directory into the container at /app, which is the working directory the pipeline expects.Mount the workspace and run Snakemake with 8 cores. All Snakemake flags are passed directly through the
ENTRYPOINT:docker run -it --rm \
-v $(pwd):/app \
-v /var/run/docker.sock:/var/run/docker.sock \
bdb-atacseq --use-conda --cores 8
The
-v /var/run/docker.sock:/var/run/docker.sock mount exposes the host Docker socket inside the container. This enables Docker-in-Docker (DinD): if any Snakemake rule uses a container: directive instead of conda:, Snakemake can spin up the required Singularity/Docker container from inside the host runner.Mounting
/var/run/docker.sock grants the container full access to the host Docker daemon. In shared or production environments, evaluate whether this privilege is acceptable before proceeding.Common Docker Run Patterns
- Bulk (default)
- scATAC mode
- With local profile
- Dry run
- Config override
Docker-in-Docker (DinD) Explained
Some Snakemake rules specify acontainer: URL instead of (or in addition to) a conda: environment file. When Snakemake encounters these rules, it attempts to pull and run the specified container. Mounting /var/run/docker.sock into the host runner container allows this to work transparently:
conda: environments), you can omit the /var/run/docker.sock mount:
When to Use Docker
macOS
Conda and Singularity have limited native macOS support. Docker Desktop provides a consistent Linux environment on both Intel and Apple Silicon Macs.
Windows
The pipeline assumes a POSIX shell. Running inside Docker via WSL 2 or Docker Desktop eliminates path and shell compatibility issues.
Restricted Linux Hosts
Environments where you cannot install system packages or where Conda is disallowed by IT policy. Docker requires only Docker itself to be installed.
Reproducibility
The image pins the Snakemake and Python versions via
envs/main.yaml, producing a consistent execution environment across machines and CI systems.Conda Cache Between Runs
By default, Snakemake creates per-rule Conda environments inside the working directory (.snakemake/conda/). Because the working directory is mounted from the host (-v $(pwd):/app), these environments persist between docker run invocations and are not re-solved on subsequent runs. If you need a clean environment cache, delete .snakemake/conda/ before rerunning.