x y*_*x y 6 docker docker-build
在我使用docker 17.12.1-ce的Ubuntu 16.04上的 Dockerfile 中
ARG ver=latest
ARG pkg=master
为了构建一个 docker 容器,我想调用docker build --build-arg ver=v1 .以设置一个特殊的包。
我的 Dockerfile 中的代码处理部分是
RUN if[ "x$ver" = "xv1" ] ; then pkg=v1.2.3 ; fi
RUN echo $pkg
不幸的是,ARG pkg变量没有更新,并且 echo 语句始终显示其初始值。
我能做什么,更新if 语句中的构建变量pkg ?
您将无法将变量从一个命令传递RUN到另一个命令,因为每个RUN命令都在不同的 shell 中执行。解决你的问题的方法是将逻辑提取到脚本中并使用构建参数执行 docker,如下所示:
if [ $ver="v1" ]; then pkg=1.2.3; fi; docker build --build-arg ver=$ver --build-arg pkg=$pkg .
| 归档时间: | 
 | 
| 查看次数: | 4674 次 | 
| 最近记录: |