如何在Docker中运行两个python应用程序

我想在Docker中运行两个不同的端口的python applicaiton。

我的shell脚本在下面,名字是serverRun.sh

exec python __server_code.py & exec python server_time_test.py & 

在dockerfile中,我试图运行这两个python应用程序

 RUN ["chmod", "+x", "./serverRun.sh"] 

它不起作用。 任何想法?

看起来你的运行命令只是设置文件权限,它并不实际执行脚本。 也许改变运行命令。

RUN指令仅在构build期间引用。 启动容器时不会运行。 你想使用ENTRYPOINTCMD

前台必须有一个进程。 所以删除最后&。 不要使用exec

 cd /rfk-thrift/nlp_search python __server_code.py & python server_time_test.py 

而这在Dockerfile中:

 RUN chmod +x ./serverRun.sh CMD ./serverRun.sh 

你的shell脚本不能终止,所以把它锁在一个强烈的睡眠while循环。

Docker检测入口点的终止,并结束容器。

最终,您可能需要使用能够检测应用程序崩溃的入口点(bash或其他脚本语言),以便您的容器在失败时退出。

我为你发布了一个function齐全的Bash入口点,它完成了这一点,以及更多。