Dockerfile:从shell继承环境变量

时间:2018-02-21 16:39:42

标签: docker environment-variables dockerfile

使用Dockerfile构建图像时,为了使一些env变量可用于docker构建上下文,应该明确声明表单的关联

ENV MYVAR=MYVALUE

AFAIK(纠正我,如果我在这里被误导),导出到执行docker build命令的shell的环境变量是传递给Docker构建上下文,即如果在我的shell中我以前是

export FOO=BAR

Dockerfile

中有以下声明
ENV FOO=$FOO

然后回显(仍然来自Dockerfile$FOO将打印一个空字符串。

所以如果以上所有都是正确的,我的问题是docker构建上下文是否有办法继承被调用的shell的环境。

2 个答案:

答案 0 :(得分:3)

您可以使用ARG定义默认值:

ARG build_var=default_value
ENV ENV_VAR=$build_var

然后在构建时覆盖:

docker build --build-arg build_var=$HOST_VAR

答案 1 :(得分:0)

您可以从终端获取值并将其传递给...

$ export test="works"
$ docker run --name your_image_name -e TEST="${test}" -d -P your_image
$ docker exec -it your_image_name /bin/bash
$ env
...
TEST=works