在奇点中读取主机系统的环境变量构建时间



当我构建奇点容器时,我想在%post部分中从主机系统读取环境变量。我一直在网上寻找实现这一目标的方法,但没有成功。我现在开始怀疑这是否可能,但我找不到任何关于这是可能/不可能的说法。

示例:

奇点定义文件:配方

BootStrap: docker
From: continuumio/anaconda3
%runscript
%post
echo $TEST_ENV_VARIABLE

在主机系统/OS上

export TEST_ENV_VARIABLE='foo'
sudo singularity build test.sif recipe

当回显TEST_ENV_VARIABLE时,仅打印空行。

如果在%post部分中无法读取主机系统的环境变量,那么有没有其他方法可以将参数传递到配方中,以便在构建时使用?

这目前是不可能的,尽管该功能存在一个悬而未决的问题。我个人并不喜欢动态构建选项,因为它使保证再现性变得更加困难。

如果确实想要更动态的东西,可以使用模板创建不同的定义文件。一个非常简单的例子:

$ cat gen_def.py
#!/usr/bin/env python3
import sys
my_def = """BootStrap: docker
From: continuumio/anaconda3
%post
echo This is {0}
echo This is {1}"""
print(my_def.format(*sys.argv[1:]))
$ ./gen_def.py one two > Singularity.custom
$ sudo singularity build test.sif Singularity.custom

最新更新