为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 docker 容器内的 java/spring-boot 项目运行 python 脚本?

如何从 docker 容器内的 java/spring-boot 项目运行 python 脚本?

翻阅古今 2022-10-26 16:47:32
我正在尝试将我的 Ubuntu 16.04 服务器上的服务迁移到 docker 18.09.2(以便我可以利用 kubernetes)。我的问题是让一个 Jar 在 Docker 中工作,就像它在我的本地机器和服务器上一样。也就是说,我试图在我的 Java Spring Boot 应用程序中运行一个 python 脚本,捕获 Python 的输出,然后显示文本。这在我的本地机器上运行良好,但是当我在 docker 基础映像上构建它并运行它时,什么也没有发生(即从 Buffered Reader 返回空值)基础 docker 镜像是“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 < 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"]


查看完整回答
反对 回复 2022-10-26
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信