为什么docker CMD中jar的执行通配符不起作用?

我有一个Dockerfile与下面的CMD来启动我的春季启动应用程序:

 FROM java:8-jre # ... CMD ["java", "-jar", "/app/file*.jar"] 

当我尝试从创build的图像启动一个容器时,我得到:

 Error: Unable to access jarfile /app/file*.jar 

但是,当我重载CMD而启动容器,并执行容器中的命令一切工作正常:

 docker run -it <imageId> bash root@<containerId>:/app# java -jar /app/file*.jar <spring boot app starts...> 

是否有可能使用通配符java -jar命令使用docker CMDs? 请不要告诉我不要使用通配符。 我想用它原因的原因;-)

更新基于这个答案我能够解决它:

 CMD ["/bin/sh", "-c", "java -jar /app/file*.jar"] 

这种星号扩展是由命令行处理器 – shell完成的,而你通过直接调用java来规避这种情况。

与Windows下的“CMD / C”一样,应该使用与命令相同的方式来获得完整的处理。

调用/bin/sh代替。