Я создаю Dockerfile
, который запускает приложение Java.Это приложение Java получает путь к файлу, который содержит вывод ls -l
.
(Обратите внимание, что в моем реальном Dockerfile
я не выполняю ls - l
, а довольно сложные команды. Я изменил это на ls - l
, чтобы упростить вопрос.)
Я попробовал следующее:
FROM openjdk:8-jre
ARG JAR
COPY target/$JAR /app/app.jar
CMD java -jar /app/app.jar <( ls -l )
Эта конструкция bash
<( ... )
должна создать временный файл, содержащий выходные данные ls -l
.
При запуске файла Docker я получаю:
/bin/sh: 1: Syntax error: "(" unexpected
Теперь sh
не поддерживает конструкцию <( ... )
, следовательно, ошибка.Как можно безопасно запустить приложение с помощью bash
вместо sh
?С безопасностью я имею в виду, что приложение Java по-прежнему будет получать все сигналы ОС (SIGHUP
, ...) и реагировать соответствующим образом.