Docker Ubuntu环境variables

在我的docker图像的构build阶段,我想为每个后续的“运行”命令自动设置一些环境variables。

但是,我想从docker conatiner中设置这些variables,因为设置它们取决于一些内部逻辑。

使用dockerfile“ENV”命令并不好,因为不能依靠内部逻辑。 (它不能依赖docker容器内运行的命令)

通常(如果这不是docker)我会设置我的〜/ .profile文件。 但是,docker不会在非交互式shell中加载这个文件。

所以在他们这一刻,我必须运行每个docker运行命令:

RUN bash -c "source ~/.profile && do_something_here" 

但是,当我每次运行一个bash命令时都必须重复这个操作,这是非常单调乏味的。 是否有一些其他的“档案”文件,我可以用它来代替。

我有一个类似的问题,找不到一个令人满意的解决scheme。 我所做的是创build一个脚本来源variables,然后执行操作。 然后,我将重写Dockerfile中RUN命令来代替使用该脚本。

在你的情况下,如果你需要运行多个命令,你可以创build一个加载variables的包装器,运行作为参数给出的命令,并将该脚本包含在docker镜像中。

您可以尝试在ARG my_env中将arg设置为env,像这样ARG my_env ENV my_env=${my_env} ,并在build-args中传递'my_env = prod',以便您可以使用set env来执行后续的RUN命令在部署堆栈的情况下, env_file:选项组合yml文件