Contribute#

Naming Convention#

Each image recipe will map to a repository on Docker Hub (or any other image registry). We adopt a simple naming convention for our image recipes which consist of one mandatory part (shown by < >) and at least three optional parts (indicated by [ ])

<coreSoftwareWWW>-[baseImageXXX]-[baseEnvWWW]-[externalPackagesZZZ]

Here, coreSoftware is the name of the core software that is conainerized, and baseImage refers to the adopted base image that the image recipe will be built on.

Note

Use baseImage when your image recipe is not based on the default base image, debian-bullseye-slim-dev. For example, if the first line of your Dockerfile does NOT start with

FROM molssi/debian-bullseye-slim-dev

you should spacify the name of the base image you use, say, ubuntu180.

baseEnv refers to any type of environment that your containerized software lives in. For example, you may want to install your conteinerized software stack within the base conda environment that can be created by mamba141, miniconda3 etc.

The externalPackages denotes the existence of external packages that the core software might not depend on but they can impact its performance or usage. For example, ASE or PSI4 can be executed from the command line or through Jupyter Notebook interface, if it is present. Finally, WWW, XXX, … are the first three digits of the version tag (major, minor and patch) according to semantic versioning.

Note

Do not include any numerical information from calendar or other customized versioning styles. Use v as delimiter if the name of the coreSoftware ends with a number (e.g., psi4v180).

Submit Your Recipes#

In order to submit your Dockerfiles or Apptainer (Singularity) definition files, please fork our GitHub repository, create a new folder under the category of your interest and use the name of your repository on Docker Hub, SingularityHub or other regiestries (image name without the tag) for this folder. Then, place your Dockerfile or Apptainer definition file inside that folder alongside a complete metadata.json file which can be cloned from molssi_hub/metadata_template.json template file. Then, commit your changes and submit them via a Pull Request.

For example, for submiting images of two containerized quantum chemistry packages such as PySCF and PSI4, your folder structure should have the following from

molssi_hub/
├── compchem/
│   ├── psi4v180-mamba141/
│      ├── Dockerfile
│      └── metadata.json
│   ├── ...
│      ├── Dockerfile
│      └── metadata.json

That is, psi4v180-mamba141 is a subfolder of compchem category and will have its own Dockerfile and metadata.json files. If everything is sorted properly, our continuous integration workflow will pickup the information stored in the metadata JSON files and process them into templated catalog pages.

We will review your PR and respond to your request as soon as possible.

Report Bugs#

Open a new issue to report a bug.

If you are reporting a bug, please include:

  • Your operating system name and version.

  • Any details about your local setup that might be helpful in troubleshooting.

  • Detailed steps to reproduce the bug.