2015-11-27 4 views
1

У меня есть простое приложение Java-приложения hello world, и я хочу создать изображение Docker, которое запускает его.Docker run java app

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", то все в порядке. Где проблема?

My docker version: 1.9.0.

ответ

2

На докер 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 не нужен

+0

О, я думал, что это будет какой-то «глупо» вещь. Благодарю. – jiri463

Смежные вопросы