如何在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来处理这个问题 。