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}"]