编程学习

singularity环境变量

2024-09-26  本文已影响0人  myshu

参考:

首先可以先运行如下命令,看下当前镜像中的所有环境变量:

singularity exec env.sif env

HOME=/home/dave
LANG=C
LD_LIBRARY_PATH=/.singularity.d/libs
PATH=/startpath:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PROMPT_COMMAND=PS1="Singularity> "; unset PROMPT_COMMAND
PS1=Singularity>
PWD=/home/dave/doc-tesrts
SINGULARITY_COMMAND=exec
SINGULARITY_CONTAINER=/home/dave/doc-tesrts/env.sif
SINGULARITY_ENVIRONMENT=/.singularity.d/env/91-environment.sh
SINGULARITY_NAME=env.sif
TERM=xterm-256color

其中常见的变量有这些

我们使用比较多的应该就是SINGULARITY_ENVIRONMENTSINGULARITY_BIND分别用于设置环境变量和bind 路径

设置/修改镜像中的环境变量,有如下几种方式。

1、在def文件中设置环境变量

def文件可以从一个现有的sif文件中构建镜像,可以在构建的过程中直接设置好环境变量。

%environment
export VARIABLE_NAME=value

示例:

%environment
    export LC_ALL=zh_CN.UTF-8  #C  这里可以兼容上特殊字符
    export PATH=/miniconda3/bin:$PATH

此外,如果你想要在构建过程中根据条件设置环境变量,你可以在%post 部分使用 shell 脚本来设置它们:

%post
echo "Setting environment variables"
export MY_ENV_VAR=some_value
echo "MY_ENV_VAR=$MY_ENV_VAR" >> /environment

示例:

%post
     echo ". /miniconda3/etc/profile.d/conda.sh" >>  $SINGULARITY_ENVIRONMENT
     echo "source /miniconda3/bin/activate st_seurat_v4" >> $SINGULARITY_ENVIRONMENT
     echo "export R_USER_CACHE_DIR=/miniconda3/envs/test/wget_lib/" >> $SINGULARITY_ENVIRONMENT  # /.singularity.d/env/91-environment.sh

这里的$SINGULARITY_ENVIRONMEN对应的就是/.singularity.d/env/91-environment.sh

这个文件下文会讲到,是镜像环境中的一个环境变量设置文件。

2、在.singularity.d/文件夹设置环境变量

如果是使用容器构建镜像,则需要在Singularity容器中进行环境变量的设置。

/.singularity.d/env/ 目录是一个特殊的目录,用于存储环境变量文件。这些文件在容器启动时按照顺序被自动执行,以设置或修改环境变量。以下是一些常见的文件:

  1. 01-base.sh:
    通常用于设置基础环境变量,而其他以90-, 99-开头的脚本文件可能会设置更具体的环境变量或应用特定的配置。
  2. 90-environment.sh
    这是一个环境变量文件,通常用于设置<u>容器启动时的环境变量</u>。你可以在这个文件中添加任何需要的环境变量。对应的是def中%environment中的变量
  3. 91-environment.sh
    类似于 90-environment.sh。是def文件在%post中设置到$SINGULARITY_ENVIRONMEN的变量
  4. 94-appsbase.sh:
    这个文件可能用于设置与容器内特定应用程序相关的环境变量,如应用程序的安装路径、配置文件路径等。
  5. 95-apps.sh
    类似于94-appsbase.sh,这个文件可能用于设置其他应用程序的环境变量或执行应用程序特定的环境配置。
  6. 99-base.sh:
    这个文件可能用于设置一些最终的环境变量或执行最后的清理工作,这些工作在容器启动前完成。

3、在命令行设置环境变量

在Singularity 3.6之后的版本,可以使用 --env--env-file 在运行的命令行中设置环境变量。
示例:

singularity run --env MYVAR=Goodbye env.sif
上一篇下一篇

猜你喜欢

热点阅读