如何在Dockerfile中定义一个variables?

在我的Dockerfile中 ,我想定义 稍后可以在Dockerfile中使用的variables

我知道ENV指令,但我不希望这些variables是环境variables。

有没有办法在Dockerfile作用域声明variables

您可以使用ARG – 请参阅https://docs.docker.com/engine/reference/builder/#arg

ARG指令使用--build-arg <varname>=<value>标志定义了一个用户可以在构build时通过docker build命令向构build器传递的variables。 如果用户指定了Dockerfile中未定义的构build参数,则构build会输出一个错误。

据我所知,只有ENV允许,如“ 环境替代 ”

环境variables(用ENV语句声明)也可以在某些指令中用作由Dockerfile解释的variables。

它们必须是环境variables,以便在由docker docker build为Dockerfile的每一行创build的每个新容器中重新声明。

换句话说,这些variables不是直接在Dockerfile中解释,而是在为Dockerfile行创build的容器中,因此使用了环境variables。


这一天,我使用ARG ( docker 1.10+,docker docker build --build-arg var=value )和ENV
单独使用ARG意味着您的variables在构build时可见, 而不是在运行时。

我的Dockerfile通常有:

 ARG var ENV var=${var} 

在你的情况下, ARG就足够了:我通常使用它来设置http_proxyvariables,docker build需要在构build时访问internet。

如果variables在相同的RUN指令中被重新使用,可以简单地设置一个shellvariables。 我真的很喜欢他们用官方的Ruby Dockerfile来处理这个问题 。