Когда вы используете JSON-подобный синтаксис в командах RUN
, ENTRYPOINT
и CMD
, пробелы внутри кавычек имеют значение. В частности, когда вы говорите
ENTRYPOINT ["java", " -javaagent:/glowroot.jar" , ...]
# ^
Пробел является частью опции; и поскольку опция не начинается с -
, Java интерпретирует его как имя класса. Это в основном верно для всех ваших вариантов. В последнем варианте -jar
и имя класса являются двумя отдельными параметрами и должны быть в двух отдельных «словах».
(рассмотрите возможность изменения ENTRYPOINT
на CMD
, чтобы упростить отладку изображения, и удаление объявления VOLUME
; это вызовет только неожиданные нечетные побочные эффекты.)
CMD ["java", "-javaagent:/glowroot.jar",
"-Dglowroot.agent.id=Docker",
"-jar", "/websocket-demo.jar"]