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

时间:2017-01-02 13:44:20

标签: java spring docker spring-boot

我有Dockerfile以下CMD来启动我的春季启动应用:

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

当我尝试从创建的图像中启动容器时,我得到:

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 CMD? 请不要告诉我不要使用通配符。我想使用它的原因; - )

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

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

2 个答案:

答案 0 :(得分:5)

这种星号扩展是由命令行处理器 - shell完成的,你通过直接调用java来绕过它。

与使用&#34; CMD / C&#34;调用命令的方式大致相同。在Windows下获得全面处理。

改为调用/bin/sh

答案 1 :(得分:0)

CMD java -jar /app/file*.jar为我工作