如何在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
- 在Docker容器中的Jenkins中configurationMSBuildpath
- 使用OpenShift 3.1自带的Dockerregistry创build应用程序
- 没有在新configuration1中描述的主机将副本集my-mongo-set映射到此节点
- Docker多容器日志logging上限
- 可以(应该)Docker用于winforms应用程序?
- 谷歌容器引擎有问题从容器registry中拉图像
- 在Docker之上维护Oracle WebLogic / SOA / BPM
- 使用spotify maven插件构buildDocker镜像时,会更改小型二进制文件
- 在GKE /容器优化的操作系统上logging日志logging会破坏kubectl日志