为什么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
代替。