【问题标题】:Running Python and Java in Docker在 Docker 中运行 Python 和 Java
【发布时间】:2019-06-29 10:14:21
【问题描述】:

我有一个安装了 python 和 java 的 docker 映像,现在我想将这两个进程作为 docker 的子进程运行。

我查看了这篇文章,它解释了如何在安装了 docker 和 python 的情况下准备图像。它没有解释如何让它们都运行。 How to run Docker with python and Java?

我检查了如何在 docker 中运行多个进程 https://runnable.com/docker/rails/run-multiple-processes-in-a-container

我知道在一个容器中运行多个进程是坏事。这是一个紧迫性和局限性,所以我会坚持一段时间。

所以 docker 文档(上面)说,准备一个 shell 文件,它启动两个进程并在 docker 文件中运行它。

但是!!!我从主机命令行 (docker exec -it container_name bash) 连接到我的 docker。我看到 (top) 正在运行进程。有Java进程在运行,而python进程没有运行。

我的 Dockerfile

# Prepare slim python, and install open-jdk-11
ENTRYPOINT ./startJavaAndPython.sh

startJavaAndPython.sh

java -XX:+UseContainerSupport $JAVA_OPTIONS -jar java-app.jar;
python app.py;

我也看了https://askubuntu.com/questions/287350/start-a-new-process-without-blocking-the-terminalhttps://unix.stackexchange.com/questions/152310/how-to-correctly-start-an-application-from-a-shell/305769,这在我的情况下不起作用。因为如你所见,在我的shell中,如果一个命令不以;结尾,那么我启动docker时就会出现错误。

更新

1) 所以,& 号没有帮助。

startJavaAndPython.sh

java -XX:+UseContainerSupport $JAVA_OPTIONS -jar java-app.jar &;
python app.py &;

我也试过了,但是没用。 startJavaAndPython.sh

java -XX:+UseContainerSupport $JAVA_OPTIONS -jar java-app.jar &
python app.py &

我收到了

$ docker run my-composed-task
: not foundonJava.sh: 1: ./startJavaAndPython.sh:
: not startJavaAndPython.sh: 2: ./startJavaAndPython.sh:

2) 我可以启动我的 docker 容器,通过 ssh 连接到它,然后手动运行 python 应用程序。它会工作的!但是如何自动完成,无需手动操作!

3) 我使用 Windows 10 作为主机。

我使用了这些链接,可能对其他人有帮助。 https://askubuntu.com/questions/287350/start-a-new-process-without-blocking-the-terminal

https://unix.stackexchange.com/questions/152310/how-to-correctly-start-an-application-from-a-shell/305769

How do I get into a Docker container's shell?

【问题讨论】:

  • 如果你连接到容器并键入命令手动启动python脚本?您是否收到错误或进程正在启动?
  • 不!我 ssh 我的 docker,并手动启动了 python 应用程序。成功了!!!
  • python进程是否依赖java进程?如果是这样,可能是当python启动时java程序还没有启动,所以你有一个失败
  • 为什么需要用分号结束命令?我以前从未见过。你不能用 bash 运行你的入口点脚本吗?
  • 那么您的 java 和 python 进程都在容器的生命周期内运行?

标签: java python windows shell docker


【解决方案1】:

经历了很多痛苦。正如我所说,我使用 Windows。它确实在每行的末尾附加了\r。然后我的 shell 脚本有这些结尾并且无法启动。更确切地说,它启动了第一个命令——即启动 java,但它从不执行启动 python 的第二个命令。

startJavaAndPython.sh

java -XX:+UseContainerSupport $JAVA_OPTIONS -jar sidecarForPythonService-app.jar & python app.py;

如果您有其他详细信息,请随时回答。

【讨论】:

    猜你喜欢
    • 2018-12-09
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2020-07-09
    • 2019-06-18
    • 2015-01-05
    • 2019-06-25
    • 2022-01-08
    相关资源
    最近更新 更多