Max*_*ime 121 variables docker dockerfile
在我的Dockerfile中,我想定义稍后可以在Dockerfile中使用的变量.
我知道该ENV
指令,但我不希望这些变量成为环境变量.
有没有办法在Dockerfile范围声明变量?
小智 87
您可以使用ARG
- 请参阅https://docs.docker.com/engine/reference/builder/#arg
该
ARG
指令定义了一个变量,用户可以docker build
使用该--build-arg <varname>=<value>
标志在构建时将该变量传递给构建器.如果用户指定了未在Dockerfile中定义的构建参数,则构建会输出错误.
Von*_*onC 48
据我所知,只ENV
允许,如" 环境更换 "中所述
环境变量(使用
ENV
语句声明)也可以在某些指令中用作Dockerfile要解释的变量.
它们必须是环境变量,以便在为Dockerfile的每一行创建的每个新容器中重新声明docker build
.
换句话说,这些变量不是直接在Dockerfile中解释,而是在为Dockerfile行创建的容器中解释,因此使用环境变量.
这一天,我使用两者ARG
(docker 1.10+,和docker build --build-arg var=value
)和ENV
.单独
使用ARG
意味着您的变量在构建时可见,而不是在运行时.
我的Dockerfile通常有:
ARG var
ENV var=${var}
Run Code Online (Sandbox Code Playgroud)
在你的情况下,ARG
就足够了:我通常用它来设置http_proxy变量,这个docker build需要在构建时访问互联网.
Ort*_*kni 33
回答你的问题:
在我的Dockerfile中,我想定义稍后可以在Dockerfile中使用的变量.
您可以使用以下内容定义变量:
ARG myvalue=3
Run Code Online (Sandbox Code Playgroud)
不允许使用相同字符周围的空格.
并在以后使用它
RUN echo $myvalue > /test
Run Code Online (Sandbox Code Playgroud)
Evg*_*kiy 11
如果变量在同一RUN
指令中重用,可以简单地设置一个shell变量.我真的很喜欢他们如何使用官方的Ruby Dockerfile来解决这个问题.
您可以使用ARG variable defaultValue
并且在运行命令期间您甚至可以使用--build-arg variable=value
. 要在 docker 文件中使用这些变量,您可以$variable
在运行命令中引用它们。
注意:这些变量可用于 Linux 命令之类的,RUN echo $variable
并且它们不会保留在映像中。
归档时间: |
|
查看次数: |
111702 次 |
最近记录: |