Maru is an opinionated command-line interface for quickly and easily containerizing scientific applications, enabling reproducible results and low-friction collaboration.
Maru provides a CLI wizard for easily creating containers of various flavors (Python, Java, MATLAB, Fiji, etc.) which follow best practices and are optimized for performance. It also makes it easy to keep your container versioned and provides convenience commands so that you can focus on your algorithms instead of learning arcane details about containers.
Maru depends on Docker and/or Singularity.
The following one-liners install the maru
binary into /usr/local/bin:
curl -skL https://data.janelia.org/maru-linux | sudo tar -xz -C /usr/local/bin
curl -skL https://data.janelia.org/maru-macos | sudo tar -xz -C /usr/local/bin
You can also download the latest release and manually copy it to anywhere in your $PATH
.
Maru assumes that your project is committed to a remote git repository. During the container build, Maru will clone your repository and run any build commands you specify.
First, initialize the project configuration:
maru init
This is an interactive process that will ask you questions about where to find your project and how to build it.
Now you can build your project into a Docker container:
maru build
From your project directory, you can always run the current version of your Docker container:
maru run [args to app]
This will also output the Docker command used to run the container, which you can then use in scripts or pipelines to integrate your app into a larger workflow.
You can also run the Docker container using Singularity (e.g. on an HPC cluster):
maru singularity run [args to app]
Maru has lots of features for building, releasing, and distributing your containers.
For more details, see the User Manual.
For developers, there are some notes available about building and releasing Maru.