Как передать backtick в Dockerfile CMD? - PullRequest
1 голос
/ 07 мая 2019

У меня есть образ докера, на котором запущено приложение Java, его основной класс динамический, в файле с именем start-class. Традиционно я запустил приложение вот так.

java <some_options_ignored> `cat start-class`

Теперь я хочу запустить эти приложения в док-контейнерах. Это мой Dockerfile.

FROM openjdk:8
##### Ignored
CMD ["java", "`cat /app/classes/start-class`"]

Я построил образ и запустил контейнеры. Фактически выполненная команда была такой:

$ docker ps --no-trunc | grep test
# show executed commands
"java '`cat /app/classes/start-class`"

Одиночные кавычки автоматически переносились за пределы черт. Как я могу это исправить ??

1 Ответ

2 голосов
/ 07 мая 2019

Вы пытаетесь запустить команду оболочки (расширение подкоманды) без оболочки (синтаксис json / exec CMD).Вам нужно переключиться на синтаксис оболочки (или явно запустить оболочку с синтаксисом exec).Это выглядело бы так:

CMD exec java `cat /app/classes/start-class`

Без форматирования json docker запустит

sh -c "exec java `cat /app/classes/start-class`"

В этом случае exec заменит оболочку в pid 1 на процесс java для улучшения сигналаобработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...