Docker Ubuntu环境变量

时间:2017-10-16 07:35:43

标签: bash ubuntu docker dockerfile

在我的docker镜像的构建阶段,我想为每个后续的" RUN"自动设置一些环境变量。命令。

但是,我想在docker conatiner中设置这些变量,因为设置它们取决于某些内部逻辑。

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

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

所以在他们的时刻我必须用:

运行每个docker RUN命令
RUN bash -c "source ~/.profile && do_something_here"

但是,每当我想要运行bash命令时,我必须重复此操作,这非常繁琐(而且不干净)。还有其他的"个人资料"我可以改用文件。

2 个答案:

答案 0 :(得分:1)

您可以尝试将arg设置为env ARG my_env ENV my_env=${my_env} 在Dockerfile中, 传递' my_env = prod'在build-args中,以便您可以将set env用于后续的RUN命令 在堆栈部署的情况下,您也可以在docker compose yml文件中使用env_file:选项

答案 1 :(得分:0)

我遇到了类似的问题,无法找到满意的解决方案。我所做的是创建一个可以获取变量的脚本,然后进行操作。然后我会重写 Dockerfile 中的RUN命令来改为使用该脚本。

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