如何在Docker中创build和使用variables?
我试图从一个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
如果你把两条线合在一起,那就行了
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提出的解决scheme,我怀疑你想在以后的Dockerfile中使用它
我将举另一个例子,如果你有一个脚本在abc / myscript.sh
RUN cd abc ; ./myscript
将RUN cd abc RUN ./myscript
,而RUN cd abc RUN ./myscript
会失败,因为它不会在abc目录中
像这样使用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