2016-12-02 12 views
1

У меня есть контейнер Docker, в котором установлены мои инструменты Python, включая мой интерфейс конвейера Luigi. Я хотел бы запустить сценарий оболочки, который запускает мой трубопровод Луиджи еженедельно, используя cron.Решение для запуска запланированного задания cron в контейнере Docker?

Я пробовал высоко и низко, чтобы заставить cron работать в контейнере Docker. Я не могу, для жизни меня, получить файл crontab -e для запуска.

В моем файле у меня есть:

0 0 * * Sun /data/myscript.sh

следуют новой линии. Cron работает в фоновом режиме - ps aux | grep cron показывает /usr/sbin/cron запущен. Кроме того, в моем /var/log/syslog файл, у меня есть:

/USR/SBIN/CRON[2037]: (root) CMD (/data/myscript.sh)

Я также попытался с помощью 0 0 * * Sun . /root/.bashrc ; sh /data/myscript.sh

Однако, мой скрипт не работает (когда я бегу мой сценарий вручную с помощью bash myscript.sh, я получаю Ожидаемые результаты).

Предложения?

+0

Возможный дубликат [Выполнение рабочих заданий cron python в докере] (http://stackoverflow.com/questions/26822067/running-cron-python-jobs-within-docker) – R0MANARMY

ответ

6

Запланированные задачи не будут выполняться внутри обычного контейнера, так как нет планировщика. Единственной активной задачей будет то, что вы выбрали для запуска через ключевое слово CMD или Entrypoint.

Для выполнения расписания задач, это более разумно использовать хост-планировщик и Докер EXEC команды:

docker exec <container> <command> 
docker exec <container> /data/myscript.sh 

Таким образом, вы бы в конечном итоге с хрон на хост-то вроде:

(Crontab Style) 0 * * * * root docker exec mycontainer /data/myscript.sh

Если у вас есть кластер, вам придется сначала запросить кластер, чтобы найти контейнер, или даже сценарий сделать это для вы.