gpt4 book ai didi

java - 如何从 docker 容器内的 java/spring-boot 项目运行 python 脚本(并接收输出)?

转载 作者:行者123 更新时间:2023-12-02 09:57:35 25 4
gpt4 key购买 nike

我正在尝试将 Ubuntu 16.04 服务器上的服务迁移到 docker 18.09.2(以便我可以利用 kubernetes)。我的问题是让 Jar 在 Docker 中工作,就像在我的本地计算机和服务器中工作一样。

即,我尝试在 Java Spring Boot 应用程序中运行 python 脚本,捕获 Python 的输出,然后显示文本。这在我的本地计算机上运行良好,但是当我在 docker 基础镜像上构建它并运行它时,没有任何反应(即从 Buffered Reader 返回 null 值)

基础 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

以下是我的相关配置和代码行:

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")

最佳答案

您没有将 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"]

关于java - 如何从 docker 容器内的 java/spring-boot 项目运行 python 脚本(并接收输出)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55883051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com