Docker运行java应用程序

时间:2015-11-27 14:52:59

标签: docker

我有一个简单的hello world java app,我想构建运行它的Docker镜像。

Dockerfile:

FROM java:8
ADD dist/JavaApplication1.jar /JavaApplication1.jar
RUN chmod +x /JavaApplication1.jar
CMD ["/usr/bin/java -jar /JavaApplication1.jar"] # or CMD ["java -jar /JavaApplication1.jar"]

我建立它:

docker build -t myapp .

按以下方式运行:

docker run -tdi myapp

但它会抛出:

Error response from daemon: Cannot start container 105f043e565e465639e15d78e92dc74e64562faa510fae5d6ff48da3a58c0125: [8] System error: exec: "java -jar /JavaApplication1.jar": stat java -jar /JavaApplication1.jar: no such file or directory

运行时:

docker run -ti myapp bash

并且执行ls,文件在那里,当我运行" / usr / bin / java -jar /JavaApplication1.jar"一切都好。哪里有问题?

我的泊坞版:1.9.0。

1 个答案:

答案 0 :(得分:2)

在docker 1.9.1上,您的任何一种方法都适用于我:

exec: "/usr/bin/java -jar /JavaApplication1.jar": stat /usr/bin/java -jar /JavaApplication1.jar: no such file or directory

这与documentation for CMD

一致

基本上你可以使用:

CMD ["executable","param1","param2"]
CMD ["param1","param2"]
CMD command param1 param2

这表明第一个arg是二进制而不是整个cmd,这就是你错误的原因。如果您按照上面的示例拆分cmd,它将正常工作。

FROM java:8
ADD dist/JavaApplication1.jar /JavaApplication1.jar
CMD ["java", "-jar", "/JavaApplication1.jar"]

奖金:不需要chmod +x