我正在嘗試將我的 Ubuntu 16.04 服務器上的服務遷移到 docker 18.09.2(以便我可以利用 kubernetes)。我的問題是讓一個 Jar 在 Docker 中工作,就像它在我的本地機器和服務器上一樣。也就是說,我試圖在我的 Java Spring Boot 應用程序中運行一個 python 腳本,捕獲 Python 的輸出,然后顯示文本。這在我的本地機器上運行良好,但是當我在 docker 基礎映像上構建它并運行它時,什么也沒有發生(即從 Buffered Reader 返回空值)基礎 docker 鏡像是“openkbs/jre-mvn-py3”?!癏elloWorld.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 < HelloWorld.py以下是我的相關配置和代碼行:Dockerfile:FROM openkbs/jdk-mvn-py3ADD target/dockerMaster.jar dockerMaster.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "dockerMaster.jar"]爪哇: @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")
1 回答

冉冉說
TA貢獻1877條經驗 獲得超1個贊
您沒有將 HelloWorld.py 文件放入容器中,這就是它無法正常工作的原因,您需要將 HelloWorld.py 添加到容器中,并確保將 python 安裝在容器中。
FROM openkbs/jdk-mvn-py3
ADD target/dockerMaster.jar dockerMaster.jar
ADD target/HelloWorld.py HelloWorld.py
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "dockerMaster.jar"]
添加回答
舉報
0/150
提交
取消