https://github.com/bencardoen/singularity_julia
Template definition file for Singularity RO containers with Julia and user package embedded.
https://github.com/bencardoen/singularity_julia
container definition-file hpc-clusters julia julia-language singularity singularity-container
Last synced: about 1 month ago
JSON representation
Template definition file for Singularity RO containers with Julia and user package embedded.
- Host: GitHub
- URL: https://github.com/bencardoen/singularity_julia
- Owner: bencardoen
- License: agpl-3.0
- Created: 2022-01-16T18:40:57.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-01-16T19:13:40.000Z (over 3 years ago)
- Last Synced: 2025-02-05T10:49:35.101Z (3 months ago)
- Topics: container, definition-file, hpc-clusters, julia, julia-language, singularity, singularity-container
- Homepage:
- Size: 18.6 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# README
Contains a template to create a [Singularity](https://sylabs.io/guides/3.5/user-guide/) Julia container with 1.7.1 on Fedora 35, with a user specified package pre-installed.Use case : you're sharing private or public work but don't want your users to have to install Julia, deal with dependencies etc.
## Usage
```bash
sudo singularity build myimage.sif singularity_template.def
```
After creation:
```bash
singularity exec myimage.sif julia --project=/opt/MyPackage.jl
``````bash
singularity shell myimage.sif
Singularity>julia --project=/opt/MyPackage.jl
```## Notes
- This sets the JULIA_DEPOT_PATH variable (inside the container) to a container folder, to ensure we're using the environment **inside** the container, not outside.
If you prefer to use the outside Julia env, remove the depot path steps, but note this will write to ~/.julia.
- Julia interactive use will write to *logs*, in order to enable this without making the container writable, we map the log directory to /dev/shm (tmpfs on Linux), which by POSIX should exist and be user writable. For execution of scripts you do not need this, so you could omit it.## Customizing
Replace MyPackage.jl with your own package. Optionally add extra dependencies (dnf or conda, ...).