Я пытаюсь перенести сервисы на моем сервере Ubuntu 16.04 в докер 18.09.2 (чтобы я мог использовать kubernetes). Моя проблема - заставить Jar работать в Docker так, как он работает на моем локальном компьютере и сервере.
А именно, я пытаюсь запустить скрипт python внутри моего Java Spring Boot Application, захватить вывод Python, а затем отобразить текст. Это хорошо работает на моем локальном компьютере, но когда я создаю его на базовом образе докера и запускаю его, ничего не происходит (то есть нулевое значение возвращается из Buffered Reader)
Базовый образ докера 'openkbs / jre-mvn-py3'. Файл «HelloWorld.py» находится в каталоге проекта SpringBoot.
Извлечение из документации openkbs (https://hub.docker.com/r/openkbs/jre-mvn-py3/), Я пробовал несколько разных команд в моем processString, но ничего не работает. Такие команды, как:
docker run -it --rm openkbs / jdk-mvn-py3 python3 -c 'print ("Hello World")'
docker run -i --rm openkbs / jdk-mvn-py3 python3
Вот мои соответствующие конфигурации и строки кода:
Dockerfile:
FROM openkbs/jdk-mvn-py3
ADD target/dockerMaster.jar dockerMaster.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "dockerMaster.jar"]
Java:
@RequestMapping("/pytest")
public String pytest() {
Runtime rt = Runtime.getRuntime();
String processString = "python3 HelloWorld.py";
System.out.println(processString);
try {
Process extractProcess = rt.exec(processString);
BufferedReader input = new BufferedReader(new InputStreamReader(extractProcess.getInputStream()));
String pyString = input.readLine();
return new String("<PYSTUFF>SUCCESS " + pyString + "</PYSTUFF>");
} catch (IOException e) {
e.printStackTrace();
return new String("<FAIL>PYTHON DID NOT RUN</FAIL>");
}
}
Python:
print("Hello World")