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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions