我需要在Docker容器中运行一个Python脚本(我目前已执行“disco_test.py”作为ENTRYPOINT
命令),该脚本将利用Disco(当然需要在该容器中运行)。问题是我似乎无法在Dockerfile中使用CMD
或RUN
或从Python脚本本身(使用subprocess模块)运行Disco。
但是,如果我创建了没有ENTRYPOINT
命令的其他图像,则使用docker run -i -t disco_test /bin/bash
运行它,然后打开Python Shell,则可以使用子流程模块成功地使Disco运行(只需使用call(["disco", "start"])
即可)。退出Python Shell后,我确实可以验证Disco仍在正常运行(disco status
报告“Master 0cfddb8fb0e4:8989正在运行”)。当我尝试从“disco_test.py”中以相同方式(使用call(["disco", "start"])
)启动Disco时(我以ENTRYPOINT
命令执行),它不起作用!它将打印“Master 0cfddb8fb0e4:8989启动”,但是之后始终检查disco status
则显示“Master 0cfddb8fb0e4:8989已停止”。
关于ENTRYPOINT
命令的运行方式是否有某些问题,使我无法从相应的Python脚本中运行Disco?实际上,在我的机器上(不在Docker容器中)运行“disco_test.py”确实可以使Disco启动并成功运行。
任何见解或建议,将不胜感激!
最佳答案
我猜想它的运行将被守护,并退出并立即停止容器。您可以尝试使用这些容器dockerized disco。它使用主管运行迪斯科。