Docker运行java应用程序
我有一个简单的hello world java应用程序,我想构build运行它的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"]
我build立它:
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”,那么一切正常。 问题在哪里?
我的docker版本:1.9.0。
在docker 1.9.1上,你的任何一种方法都适用于我:
exec: "/usr/bin/java -jar /JavaApplication1.jar": stat /usr/bin/java -jar /JavaApplication1.jar: no such file or directory
这与CMD的文档是一致的
基本上你可以使用:
CMD ["executable","param1","param2"] CMD ["param1","param2"] CMD command param1 param2
这将意味着第一个参数是一个二进制不是一个整数cmd,这就是你错误的原因。 如果你像上面的例子那样分解了cmd,它就可以正常工作。
FROM java:8 ADD dist/JavaApplication1.jar /JavaApplication1.jar CMD ["java", "-jar", "/JavaApplication1.jar"]
奖金: chmod +x
是不需要的