Skip to content

Feature request: Apptainer/Singularity support as an alternative container backend #128

Description

@pletzer

Would it be possible to add Apptainer (formerly Singularity) as a supported container runtime alongside Docker? This would make floatCSEP usable on HPC clusters, where Docker is typically not available due to its daemon requiring root privileges.

Motivation

Many scientific computing platforms — including national HPC facilities — explicitly prohibit Docker but support Apptainer/Singularity, which is designed for unprivileged, multi-user environments. Researchers who want to run floatCSEP experiments on these systems currently have no path forward for TimeDependentModel runs that rely on containerized forecast models.

Why this looks feasible

The container runtime is already cleanly abstracted behind EnvironmentManager in floatcsep/infrastructure/environments.py. Adding Apptainer support would require:

  • A new ApptainerManager class implementing the existing four-method interface (create_environment, env_exists, run_command, install_dependencies)
  • create_environment() builds a SIF file from the model's Dockerfile via apptainer build model.sif docker-daemon://image or apptainer build model.sif.
  • run_command() invokes apptainer exec --bind <input_dir>:/app/input,<forecast_dir>:/app/forecasts model.sif
  • EnvironmentFactory.get_env() recognises build: apptainer (or singularity) in the model config

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions