在Docker中运行Python和Java

时间:2019-02-05 14:50:04

标签: java python windows shell docker

我有一个安装了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?

1 个答案:

答案 0 :(得分:1)

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

startJavaAndPython.sh

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

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