如何在docker中创建和使用变量?

时间:2016-03-24 09:45:03

标签: docker

我正在尝试从pom文件中获取该版本,以便稍后可以在另一个命令中使用它。所以在我的docker文件中,

RUN VERSION="$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version|grep -Ev '(^\[|Download\w+:)')" 
RUN echo $VERSION

但回声没有打印出来。我真正想要的是,

RUN mv /abc/abc-${VERSION}.jar /abc/abc.jar

2 个答案:

答案 0 :(得分:2)

像这样使用ENV,这就是Docker开发人员希望你这样做的方式:

ENV VERSION "$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version|grep -Ev '(^\[|Download\w+:)')" 
RUN echo $VERSION

有一个例子是与您的案例非常相似的文档:https://docs.docker.com/engine/reference/builder/#environment-replacement

答案 1 :(得分:1)

如果你将2行合并为一行,它将起作用

RUN VERSION="$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version|grep -Ev '(^\[|Download\w+:)')" ; echo $VERSION

推荐的方式当然是Ilya Peterov提出的解决方案,我怀疑你以后想在Dockerfile中使用它

如果您在abc / myscript.sh

中有脚本,我将再举一个例子

RUN cd abc ; ./myscript

会起作用 RUN cd abc RUN ./myscript

将失败,因为它不在abc目录中