我需要在 Docker 容器中运行一个 Python 脚本(我目前执行“disco_test.py”作为我的ENTRYPOINT
命令),它将利用 Disco(当然需要在该容器中运行)。问题是我似乎无法使用DockerfileCMD
或RUN
在 Dockerfile 中或从 Python 脚本本身(使用 subprocess 模块)运行 Disco。
但是,如果我在没有命令的情况下创建了一个相同的图像,然后ENTRYPOINT
运行它docker run -i -t disco_test /bin/bash
然后打开一个 Python shell,我可以使用 subprocess 模块成功地运行 Disco(只需使用call(["disco", "start"])
works)。退出 Python shell 后,我确实可以验证 Disco 是否仍在正常运行(disco status
报告“Master 0cfddb8fb0e4:8989 running”)。当我尝试call(["disco", "start"])
从“disco_test.py”中以相同的方式(使用)启动迪斯科时,我作为ENTRYPOINT
命令执行,它不起作用!它将打印“Master 0cfddb8fb0e4:8989 已启动”,但disco status
之后检查总是显示“Master 0cfddb8fb0e4:8989 已停止”。
该ENTRYPOINT
命令的运行方式是否会阻止我从相应的 Python 脚本中运行 Disco?在我的机器上(不是在 Docker 容器中)运行“disco_test.py”确实可以让 Disco 成功启动并运行。
任何见解或建议将不胜感激!