Мой Dockerfile, похоже, собран правильно (он мне об этом говорит). Когда я запускаю контейнер, я получаю приведенное ниже сообщение об ошибке. Я пробовал запускать команды (CMD) с каталогом службы и без него.
crontab.sh в основном записывает расписание cron в текстовый файл (cron.jobs), а затем импортирует текстовый файл в crontab.
Как уже объяснялось в других ответах, только один CMD будет выполняться для каждого файла Dockerfile, и команда, которую вы хотите запустить, неверна.
Но есть более насущная проблема с вашей настройкой IMO - контейнеры Docker обычно не предназначены для работы таким образом. Вместо этого вам следует запустить службы cron с хоста (или вашего оркестратора) в качестве одноразовых процессов (возможно, используя что-то вроде docker run или docker-compose run, или, если по какой-то причине вы не хотите запускать для этого отдельный контейнер, я думаю, вы могли бы использовать docker exec).
Однако это всего лишь мой взгляд на то, как следует использовать контейнеры, поэтому, очевидно, вам следует отнестись к этому с недоверием.
Если вы добавите это к /etc/crontab, это не будет отображаться в личной crontab root, поскольку она содержит только пользовательскую crontab, отредактированную с помощью crontab -e, а не общесистемный в /etc.
Более подробная информация:
Я предполагаю, что /pulse/crontab.sh (который вы не показываете, почему?) добавляет соответствующую строку crontab в общесистемный файл crontab /etc/crontab. Позже вы выполните команду crontab -l, но это показывает только ошибку, потому что в нем перечислены roots личный только crontab (который оказывается пустым), а не общесистемный в /etc/crontab. Все это совершенно нормально и ожидаемо. Чтобы показать строку, добавленную вашим скриптом, вы должны заменить CMD crontab -l с CMD cat /etc/crontab.
Все это не имеет ничего общего с какими-либо командами dockerfile, такими как ADD, RUN или CMD, это просто базовые вещи для Linux.