Запуск дискотеки в контейнере Docker
Мне нужно запустить скрипт Python в контейнере Docker (в настоящее время у меня есть выполнение "disco_test.py" в качестве моего ENTRYPOINT
команда), которая будет использовать Disco (который, конечно, должен быть запущен в этом контейнере). Проблема в том, что я не могу запустить Диско CMD
или же RUN
в Dockerfile или из самого скрипта Python (используя модуль подпроцесса).
Если, однако, я создаю другое идентичное изображение без ENTRYPOINT
команда, запустите его с docker run -i -t disco_test /bin/bash
и затем открыть оболочку Python, я могу успешно запустить Disco с помощью модуля подпроцесса (просто используя call(["disco", "start"])
работает). После выхода из оболочки Python я действительно могу убедиться, что дискотека по-прежнему работает правильно (disco status
сообщает "Master 0cfddb8fb0e4:8989 работает"). Когда я пытаюсь запустить Disco таким же образом (используя call(["disco", "start"])
) из "disco_test.py", который я выполняю как ENTRYPOINT
команда, это не работает! Будет напечатано "Master 0cfddb8fb0e4:8989 запущен", однако проверка disco status
впоследствии ВСЕГДА показывает "Мастер 0cfddb8fb0e4: 8989 остановлен".
Есть ли что-то о том, как ENTRYPOINT
запускается команда, которая не позволяет мне запустить Disco из соответствующего скрипта Python? Запуск "disco_test.py" на моем компьютере (не в контейнере Docker) действительно приводит к успешному запуску Disco.
Любые идеи или предложения будут с благодарностью!
1 ответ
Я предполагаю, что его запуск демонизируется и сразу же останавливает контейнер. Вы можете попробовать эти контейнеры с докерской дискотекой. Для запуска дискотеки используется супервизор.