Запустите jar с помощью ProcessBuilder в контейнере Docker.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Запустите jar с помощью ProcessBuilder в контейнере Docker.

Сообщение Anonymous »

Основное приложение SpringBoot работает в Docker-контейнере. Это приложение запускает jar через ProcessBuilder:

Код: Выделить всё

   final ProcessBuilder processBuilder = SystemUtils.IS_OS_WINDOWS
? new ProcessBuilder("java", processKey, activeProfilesArg, "-jar", file.getFileName())
: new ProcessBuilder("nohup", "java", processKey, activeProfilesArg, "-jar", file.getFileName(), "&");

processBuilder.directory(directory.toFile());

//...redirect output to log file

log.info("Executable file will run with command: {}", processBuilder.command());

final Process process = processBuilder.start();

if (process.isAlive()) {
log.info("Executable file was started with PID {}", process.pid());
} else {
log.error("Executable file start failed with code {}", process.exitValue());
throw new OperationException("Failed with code " + process.exitValue());
}

Код: Выделить всё

process.pid()
возвращает 252. Но этот pid отсутствует в выводе команды ps. Process.isAlive() возвращает true, но пульса от jar тоже нет, файл журнала пуст. Если основное приложение работает на локальной машине, без контейнера, то всё работает, jar-файл работает. Если запустить файл jar вручную в контейнере через bash, он работает. Почему такое поведение и как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/788 ... -container
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»