spack-image/README.md

67 lines
2.7 KiB
Markdown
Raw Normal View History

# Spack %%spack_version%% Container Image
Spack is a package manager for supercomputers. It provides build recipes
for more than 6000 software components, and it allows to build entire HPC application stacks with little to no prerequisites.
This container image serves as a build environment for a `Dockerfile`
or an `apptainter.def` file created by `spack containerize`. It can be
used to run spack commands directly as well. Doing this may require to
bind-mount local directories into the container.
## How to use the image
This image may be used to build and containerize application stacks using
Spack. The stack is installed in a base container such as SLE BCI Base.
To build a containerized application stack, create the file `spack.yaml`
in an empty directory with the following content:
```yaml
spack:
specs:
- <application spec>
container:
format: <container_format>
images:
build: "registry.opensuse.org/opensuse/bci/spack:%%spack_version%%-%RELEASE%"
final: "registry.suse.com/bci/bci-base:latest"
os_packages:
command: zypper
build:
- <additional packages for building>
final:
- <additional packages for final container>
```
Replace 'application spec' with the actual application name, and provide optional
build specifications (for details see the
[Spack documentation](https://spack.readthedocs.io/en/latest/)).
The 'container_format' can be either `docker` for a docker/OCI container
image or `singularity` for a Singularity/Apptainer container image.
The `os_packages` section is optional. Here you may specify additional
packages to install in the build container or in the final
runtime container image.
To build an Apptainer container, run the following commands in the same
directory:
```ShellSession
$ spack containerize > apptainer.def
$ apptainer build apptainer.sif apptainer.def
```
This builds `apptainer.sif` as the final Singularity/Apptainer image that can then be run as follows:
```ShellSession
$ apptainer exec ./apptainer.sif <command line ...>
```
To build a docker/OCI container, run the following commands:
```ShellSession
$ spack containerize > Containerfile
$ podman build -t <target_name> --format=docker .
```
This builds a Docker container that you can run as follows:
```
$ podman run -it --rm <target_name> <command line ...>
```
If you do not have a local installation of Spack, you can use this container
to run Spack commands - like `spack containerize`:
```ShellSession
$ podman run -v $(pwd):/root:Z --rm registry.opensuse.org/opensuse/bci/spack:%%spack_version%%-%RELEASE% containerize > Containerfile
```
For further information, refer to the
(Spack documentation on container images)[https://spack.readthedocs.io/en/latest/containers.html].