cronからdocker exec -itでコンテナ上のコマンドが動かなかった件

なろうとかカクヨムとかのWeb小説をepubに変換してくれるnarou.rbっていうソフトのdocker版を運用しているのだが、小説の更新を毎回手動でコマンド打って確認するのも面倒くさいのでcronにやらせるよう、corn.dailyに記述してたんだけど全く動かなかった。毎日確認してほしいので以下のようなスクリプトを"/etc/cron.daily/"においていた。

#narourb更新
 docker exec -it narourb ash -c "narou u" > narourb-NovelUpdate.log
 date >> /var/log/narourb-NovelUpdate.log

とりあえずリダイレクトで簡易的なログ代わりに吐かせてみたところdateの出力しかされてなかった。

解決方法

とりあえず全くわからんかったのでstackoverflowの強そうなエンジニアたちの過去のQAを参考にしたところ、itオプションがだめらしい。なのでitオプションを外したら動くはず。(未検証)

#narourb更新
 docker exec narourb ash -c "narou u" > narourb-NovelUpdate.log
 date >> /var/log/narourb-NovelUpdate.log

まぁ多分cronはそもそも端末を使用しないから云々的な理由だと思う

参考文献

https://stackoverflow.com/questions/37089033/docker-exec-is-not-working-in-cron