2014-10-23 7 views
0

Мне нужно запустить сценарий Python в контейнере Docker (в настоящее время у меня есть исполнение «disco_test.py» в качестве моей команды ENTRYPOINT), которая будет использовать Дискотека (которая, конечно же, должна быть запущена в этом контейнере). Проблема в том, что я не могу заставить Disco работать либо с CMD, либо с RUN в файле Docker, либо из самого скрипта Python (используя модуль подпроцесса).Запуск Дискотека в контейнере Docker

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

Есть ли что-то о том, как выполняется команда ENTRYPOINT, что мешает мне получить Disco из соответствующего скрипта Python? Запуск «disco_test.py» на моей машине (не в контейнере Docker) действительно ускоряет и работает Диско.

Любые идеи или предложения были бы оценены с благодарностью!

ответ

0

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

Смежные вопросы