Using ARG Variables(使用ARG变量)
我们可以使用ARG或ENV指令来指定RUN指令可用的变量。使用ENV指令定义的环境变量始终覆盖同名ARG指令。思考下面这个Dockerfile与ENV和ARG指令。
假设这个镜像通过下面这个命令构建:
在这种情况下,RUN指令使用值v1.0.0而不是ARG设置的由用户传递的值v2.0.1。这种行为类似于shell脚本,从定义一个本地作用域变量的地方开始,它会覆盖作为参数传递的变量或者从环境中继承的变量。
使用上面的例子,但不同的ENV定义,我们可以在ARG和ENV指令之间创建更有用的交互:
与ARG指令不同,ENV值总是会保存在构建的镜像中。思考下面不带--build-arg选项标志的示例:
在上面的示例中,CONT_IMG_VER仍然保存在镜像中,但是它的值为v1.0.0。因为第三行的ENV指令为它设置了一个默认值。
本示例中的变量扩展技术允许我们通过命令行中的参数,并通过ENV指令将它们保存在到最终的镜像中。但是变量扩展仅支持有限的Dockerfile指令集。
Last updated