Запуск дискотеки в контейнере 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 ответ

Я предполагаю, что его запуск демонизируется и сразу же останавливает контейнер. Вы можете попробовать эти контейнеры с докерской дискотекой. Для запуска дискотеки используется супервизор.

Другие вопросы по тегам