Из документации для CMD
:
Инструкция CMD имеет три формы:
- CMD ["исполняемый файл", "param1""," param2 "] (exec form, это предпочтительная форма)
- CMD [" param1 "," param2 "] (в качестве параметров по умолчанию для ENTRYPOINT)
- CMD команда param1 param2 (форма оболочки)
И:
Примечание: В отличие от формы оболочки, форма exec не вызывает командную оболочку.Это означает, что обычная обработка оболочки не происходит.
Также:
Если вы хотите запустить <command>
без оболочки, вы должны выразить команду какМассив JSON и дают полный путь к исполняемому файлу. (выделено мной)
Итак, у вас есть пара проблем:
- Выиспользуя форму Exec (потому что она заключена в квадратные скобки), но вы не указали полный путь к исполняемому файлу Java.
- Вы не предоставили аргументы в виде массива JSON
Когда вывойдите в контейнер, вы запускаете оболочку BASH, поэтому исполняемый файл Java находится в пути, и команда запускается.Это не тот случай, когда CMD
работает как exec
, отсюда и ошибка.
Я думаю, что если вы измените строку на:
CMD ["/path/to/java", "-jar", "/opt/my-app-1.0-SNAPSHOT.jar"]
или
CMD java -jar /opt/my-app-1.0-SNAPSHOT.jar
Любой из них должен работать.