Так уж вышло, что запуск cron в Docker-контейнере — дело весьма специфическое, если не сказать сложное. В сети полно решений и идей на эту тему. Вот один из самых популярных (и простых) способов запуска:
cron -f
Но такое решение (и большинство других тоже) обладает рядом недостатков, которые сходу обойти достаточно сложно:
- неудобство просмотра логов (команда docker logs не работает)
- cron использует свой собственный Environment (переменные окружения, переданные при запуске контейнера, не видимы для cron заданий)
- невозможно нормально (gracefully) остановить контейнер командой docker stop (в конце концов в контейнер прилетает SIGKILL)
- контейнер останавливается с ненулевым кодом ошибки