Skip to main content

Generate Dockerfiles and container build workflows from Conda environments

Project description

Absconda

PyPI version License: MIT Python 3.10+

Turn conda environments into optimized container images for development and HPC deployment.

Absconda bridges the gap between conda's reproducible environments and container-based workflows. Define your scientific computing environment once with conda, then deploy it anywhere—Docker, Singularity/Apptainer, HPC clusters—with production-ready optimizations.

Key Features

🚀 Multi-Stage Builds - Automatic optimization that reduces image sizes by 40-60%
🔐 Policy Validation - Enforce security and compliance rules organization-wide
🏗️ Remote Builders - Offload builds to cloud instances with automatic provisioning
🧪 HPC Integration - First-class Singularity support with module files and wrappers
📦 R + renv Support - Combine conda environments with R package management
🎯 Flexible Deployment - Multiple modes: full-env, tarball, requirements, export-explicit
🔧 Custom Templates - Jinja2-based system for advanced customization

Quick Start

Installation

# Install from PyPI
pip install absconda

# Or with pipx (recommended)
pipx install absconda

# Verify installation
absconda --version

Basic Usage

1. Create a conda environment file:

# environment.yaml
name: my-analysis
channels:
  - conda-forge
  - bioconda
dependencies:
  - python=3.11
  - numpy=1.26
  - pandas=2.1
  - scikit-learn=1.3

2. Build a Docker image:

absconda build \
  --file environment.yaml \
  --repository ghcr.io/myorg/my-analysis \
  --tag latest \
  --push

3. Use the image:

docker run --rm ghcr.io/myorg/my-analysis:latest python -c "import numpy; print(numpy.__version__)"

For HPC with Singularity:

# Build Docker image and convert to Singularity
absconda build \
  --file environment.yaml \
  --repository ghcr.io/myorg/my-analysis \
  --tag latest \
  --push

# Convert to Singularity
absconda singularity \
  --image ghcr.io/myorg/my-analysis:latest \
  --output my-analysis.sif

# Generate HPC module
absconda module \
  --image my-analysis.sif \
  --module-path /apps/modules/my-analysis/1.0

See the Quick Start Guide for a complete walkthrough.

Documentation

For New Users

Guides

How-To Guides

Examples

Complete working examples with explanations:

Reference

For Contributors

Why Absconda?

The Problem

Scientific computing has conflicting requirements:

  • Reproducibility: Need exact package versions
  • Portability: Must run on laptops, HPC clusters, cloud
  • Performance: Large conda environments create huge containers
  • HPC Reality: Singularity/Apptainer, not Docker; module systems, not Docker Compose

The Solution

Absconda solves this by:

  1. Starting with conda - Use the ecosystem you already know
  2. Optimizing automatically - Multi-stage builds reduce image sizes by 40-60%
  3. Targeting HPC - Native Singularity support with modules and wrappers
  4. Enforcing policies - Organization-wide security and compliance
  5. Enabling remote builds - Build on powerful cloud instances, not your laptop

Compared to Alternatives

Feature Absconda repo2docker docker-conda Manual Dockerfile
Multi-stage optimization ✅ Automatic ❌ No ❌ No ⚠️ Manual
Singularity integration ✅ First-class ❌ No ❌ No ⚠️ Manual
HPC modules ✅ Built-in ❌ No ❌ No ⚠️ Manual
Policy enforcement ✅ Yes ❌ No ❌ No ❌ No
Remote builders ✅ Yes ❌ No ❌ No ❌ No
R + renv support ✅ Yes ⚠️ Limited ❌ No ⚠️ Manual
Custom templates ✅ Jinja2 ❌ No ❌ No ✅ Full control

Real-World Example

Complete workflow for deploying to NCI Gadi HPC:

# 1. Build optimized Docker image (locally or on GCP)
absconda build \
  --file rnaseq-env.yaml \
  --repository ghcr.io/lab/rnaseq \
  --tag v1.0 \
  --remote-builder gcp-builder \
  --push

# 2. Convert to Singularity on HPC
ssh gadi.nci.org.au
singularity pull rnaseq.sif docker://ghcr.io/lab/rnaseq:v1.0

# 3. Generate module file
absconda module \
  --image /apps/rnaseq/v1.0/rnaseq.sif \
  --module-path /apps/Modules/modulefiles/rnaseq/1.0 \
  --wrapper-dir /apps/rnaseq/v1.0/wrappers

# 4. Use in PBS job
module load rnaseq/1.0
python analysis.py  # Uses containerized environment transparently

The result: reproducible, optimized, compliant environments deployed consistently from development through production.

Use Cases

🔬 Research Computing

  • Reproducible analysis pipelines
  • Sharing environments with collaborators
  • Publishing with computational papers
  • Archive environments for long-term reproducibility

🏢 Multi-User HPC

  • Centralized environment management
  • Policy enforcement across teams
  • Module system integration
  • Singularity deployment at scale

☁️ Cloud + HPC Hybrid

  • Build in cloud (fast, powerful VMs)
  • Deploy to HPC (Singularity)
  • Consistent environments across platforms
  • Cost-optimized with remote builders

🧬 Bioinformatics

  • Bioconda + R/Bioconductor workflows
  • GPU-accelerated analysis
  • Large-scale genomics pipelines
  • Compliance with data policies

Project Status

Absconda is production-ready and actively maintained. It powers scientific computing workflows for research teams at the Garvan Institute and beyond.

Current version: 0.1.0
Python support: 3.10, 3.11, 3.12
License: MIT

Getting Help

Contributing

Contributions welcome! See Contributing Guide.

Areas needing help:

  • Documentation improvements
  • Example workflows
  • Testing on different platforms
  • Feature requests and feedback

Acknowledgments

Developed at the Garvan Institute of Medical Research by the Swarbrick Lab.

Built with:

License

MIT License - see LICENSE for details.


Ready to get started?Installation Guide

Have questions?GitHub Discussions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

absconda-0.1.0.tar.gz (46.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

absconda-0.1.0-py3-none-any.whl (39.6 kB view details)

Uploaded Python 3

File details

Details for the file absconda-0.1.0.tar.gz.

File metadata

  • Download URL: absconda-0.1.0.tar.gz
  • Upload date:
  • Size: 46.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for absconda-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7686366bcb79ee1815a0663132e5c5a894623ba9c0cf25b70063d02b642c4d1b
MD5 96f1ff68c6421256a1316e8a96003094
BLAKE2b-256 8a76674a33f29724eb0b506b4d720d3b7663a02d503b2fe44ab8f1164e9967f1

See more details on using hashes here.

File details

Details for the file absconda-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: absconda-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 39.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for absconda-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a473fc6e775d1e61d487d2cd407a3d4a1c198562de7c4f8c3249a928458ff413
MD5 d781c9431f88c5a67a1cf4e131d8b6ac
BLAKE2b-256 ca50eaba873fb567f5c75fdd1b64a7ffc81aa2323b9a6f3437511c9ea2662972

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page