Dockerfile CMD不接受variables

无法在CMD行上使用variables:

#CMD ["/opt/jdk/bin/java", "-jar", "${ARTIFACTID}-${VERSION}.${PACKAGING}"] CMD ["/opt/jdk/bin/java", "-jar", "ssltools-domain-LATEST.jar"] 

最新的线路工程,而不是第一线。

任何帮助或解决方法非常赞赏

当您将参数作为JSONstring写入CMD (或ENTRYPOINT )时,如…

 CMD ["/opt/jdk/bin/java", "-jar", "ssltools-domain-LATEST.jar"] 

…这个命令是直接用exec系统调用执行的,而不是由一个shell来处理的 。 这意味着没有I / Oredirect,没有通配符处理…并没有可变的扩展。 你可以用多种方法解决这个问题:

  • 你可以把它写成一个普通的string,而不是像下面这样:

     CMD /opt/jdk/bin/java -jar ${ARTIFACTID}-${VERSION}.${PACKAGING} 

    当参数不是JSON构造时,它会传递给sh -c

  • 你可以按照菲利普的build议去做,然后把这些论据传给自己:

     CMD ["sh", "-c", "/opt/jdk/bin/java -jar ${ARTIFACTID}-${VERSION}.${PACKAGING}"] 

    这两个选项基本相同。

  • 第三个选项是将所有内容放到shell脚本中,然后运行:

     COPY start.sh /start.sh CMD ["sh", "/start.sh"] 

    如果您需要执行的不仅仅是一个简单的命令行,这特别有用。

先试试这个小窍门 :

 CMD ["sh", "-c", "/opt/jdk/bin/java -jar ${ARTIFACTID}-${VERSION}.${PACKAGING}"]