Conda Environments#

Adding a conda environment to a container may be easily done using cotainr.

Make sure you have the rights to use the packages in your conda environment

When adding a conda environment, it is the responsibility of the user of cotainr to make sure they have the necessary rights to use the conda channels/repositories and packages specified in the conda environment, e.g. if using the default Anaconda repositories.

As an example, consider the following conda environment file, my_conda_env.yml:

my_conda_env.yml#
channels:
  - conda-forge
dependencies:
  - python=3.11.0
  - numpy=1.23.5

A container based on the official Ubuntu 22.04 DockerHub image, containing this conda environment, may be built using:

$ cotainr build my_conda_env_container.sif --base-image=docker://ubuntu:22.04 --conda-env=my_conda_env.yml

The conda environment is automatically activated when the container is run, allowing for directly using the Python and NumPy versions installed in the conda environment, e.g.

$ singularity exec my_conda_env_container.sif python3 --version
Python 3.11.0
$ singularity exec my_conda_env_container.sif python3 -c "import numpy; print(numpy.__version__)"
1.23.5

You must accept the Miniforge license to add a conda environment

Bootstrapping of the conda environment in the container is done using Miniforge. As part of the bootstrap process, you must accept the Miniforge license terms. This can be done either by accepting them during the container build process, or by specifying the --accept-licenses option when invoking cotainr build.

Pip packages#

cotainr does not support creating a container directly from a pip requirements.txt file. However, pip packages may be included in a conda environment, e.g. updating my_conda_env.yml to

my_conda_env.yml#
channels:
  - conda-forge
dependencies:
  - python=3.11.0
  - numpy=1.23.5
  - pip
  - pip:
    - scipy==1.9.3

allows for installing SciPy via pip.