This repository contains container recipe files for building containers used in scientific computing workflows.
- Podman installed on your system
- pre-commit (for development)
.
├── recipes/ # Container recipe files
│ ├── boost_corr-1.0.0.recipe
│ ├── boost_corr-cuda-1.0.0.recipe
│ ├── dials-1.0.0.recipe
│ ├── eigen-1.0.0.recipe
│ ├── gsas2-1.0.0.recipe
│ ├── midas-beta.recipe
│ ├── nx_refine-1.0.0.recipe
│ ├── tomocupy-beta.recipe
│ ├── tomopy-1.0.0.recipe
│ └── xrf_maps-beta.recipe
├── scripts/ # Utility scripts
└── .github/ # GitHub Actions workflows
-
Boost Correlation (
recipes/boost_corr-1.0.0.recipe)- Based on: miniconda-base
- Includes: boost correlation analysis tools
- Environment: Python 3.11 with scientific computing stack
-
Boost Correlation CUDA (
recipes/boost_corr-cuda-1.0.0.recipe)- Based on: nvidia/cuda:12.8.0-runtime-ubuntu24.04
- Includes: boost correlation analysis tools with CUDA support
- Environment: Python 3.11 with CUDA and PyTorch
-
DIALS (
recipes/dials-1.0.0.recipe)- Based on: miniconda-base
- Includes: DIALS for X-ray diffraction data analysis
- Environment: Python 3.11 with crystallography tools
-
XPCS-Eigen (
recipes/eigen-1.0.0.recipe)- Based on: miniconda-base
- Includes: xpcs-eigen, numpy, h5py
- Environment: Python 3.11 with C++ development tools
-
GSAS2 (
recipes/gsas2-1.0.0.recipe)- Based on: miniconda-base
- Includes: GSAS2 and crystallographic analysis tools
- Environment: Python 3.11 with scientific computing stack
-
MIDAS (
recipes/midas-beta.recipe)- Based on: miniconda-base
- Includes: MIDAS data processing tools
- Environment: Python 3.11 with scientific computing stack
-
NX Refine (
recipes/nx_refine-1.0.0.recipe)- Based on: miniconda-base
- Includes: nxrefine and related dependencies
- Environment: Python 3.11 with scientific computing stack
-
TomoCuPy (
recipes/tomocupy-beta.recipe)- Based on: miniconda-base
- Includes: tomocupy and related dependencies
- Environment: Python 3.11 with scientific computing stack
-
Tomopy (
recipes/tomopy-1.0.0.recipe)- Based on: miniconda-base
- Includes: tomopy and related dependencies
- Environment: Python 3.11 with scientific computing stack
-
XRF Maps (
recipes/xrf_maps-beta.recipe)- Based on: miniconda-base
- Includes: XRF maps processing tools
- Environment: Python 3.11 with scientific computing stack
To build a container from a recipe file:
# Build a specific container
podman build -f recipes/boost_corr-1.0.0.recipe -t boost_corr:1.0.0
# Build all containers
for recipe in recipes/*.recipe; do
name=$(basename "$recipe" .recipe | cut -d'-' -f1)
version=$(basename "$recipe" .recipe | cut -d'-' -f2)
podman build -f "$recipe" -t "$name:$version"
doneTo run a container interactively:
podman run -it <container_name>:<version> /bin/bashPre-built containers are available on GitHub Container Registry (ghcr.io):
podman pull ghcr.io/globus-gladier/aps_recipes/<container-name>:<version>For example:
podman pull ghcr.io/globus-gladier/aps_recipes/boost_corr:1.0.0-
Install pre-commit:
pip install pre-commit
-
Install the pre-commit hooks:
pre-commit install
The repository includes pre-commit hooks that validate recipe files for best practices:
- Base image must use a fully qualified name (e.g.,
docker.io/...) apt-getcommands must include cleanup (apt-get clean)conda installcommands must include cleanup (conda clean -afy)pip installcommands must use--no-cache-dirflag- Each container must have a
CMDorENTRYPOINTset to/bin/bash - Each container must include
globus-compute-endpointinstallation
To run validation manually:
pre-commit run --allThe containers are built and published using GitHub Actions. Each container has its own workflow that can be triggered independently, or you can build all containers at once using the main workflow.
- Go to the "Actions" tab in the GitHub repository
- Select the workflow for the container you want to build
- Click the "Run workflow" button
- Select the branch and version
- Click "Run workflow"
- Go to the "Actions" tab
- Select the "Build and Publish All Containers" workflow
- Click "Run workflow"
- Select the branch
- Click "Run workflow"
- Make sure you have sufficient disk space for building the containers
- The build process may take several minutes depending on your system
- Pre-built containers are automatically published to GitHub Container Registry
- Some containers require significant system resources for building
Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the terms of the LICENSE file.