Chạy cron trên docker ruby image

Đăng bởi Lưu Đại vào ngày 31-01-2023
Mình gặp vấn đề khi chạy cron job trong docker container.
Cronjob vẫn chạy bình thường vẫn hiện log lên syslog, nhưng nó lại không thực hiện lệnh update data trong Rails 😭
Khi chạy chay trên máy local (không dùng docker) thì cronjob + code vẫn hoạt động đúng 😱.
Hóa ra là vào trong container mình phải copy hết các biến môi trường vào file crontab không thì các biến môi trường mặc định của cron sẽ làm code chạy sai.

Để fix thì thêm dòng sau vào file schedule.rb rồi chạy lại whenever --update-crontab (nếu dùng gem whenever còn các gem khác thì chạy lệnh để chuyển nội dung file schedule.rb vào crontabs tương ứng) 
ENV.each { |key, val| env(key, val) }

*Thường chạy không có container thì chỉ cần có biến PATH là đủ