我想在Docker中运行两个具有不同端口的python应用程序。
我的 shell 脚本在下面,名称是 serverRun.sh
exec python __server_code.py &
exec python server_time_test.py &
在 dockerfile 中,我正在尝试运行这两个 python 应用程序
RUN ["chmod", "+x", "./serverRun.sh"]
它没有用。知道吗?
前台必须有一个进程。因此,请删除最后一个&。并且不要使用exec
cd /rfk-thrift/nlp_search
python __server_code.py &
python server_time_test.py
在 Dockerfile 中:
RUN chmod +x ./serverRun.sh
CMD ./serverRun.sh
看起来您的 run 命令只是设置文件权限,它实际上并没有执行脚本。也许更改运行命令。
RUN
指令仅在构建期间引用。启动容器时,它不会运行。您想使用ENTRYPOINT
或CMD
你的 shell 脚本不能终止,所以在强睡眠的情况下将其锁定在 while 循环中。
Docker 检测到入口点的终止,并结束容器。
最终,您可能希望求助于能够检测应用程序崩溃的入口点(bash 或其他脚本语言(,以便容器在失败时退出。
我在这里为您发布了一个功能齐全的 Bash 入口点,它正是这样做的,甚至更多。