1、下載的鏡像是ubuntu最簡版,默認沒有安裝crontab
2、業務需求需要crontab
最早解決方案
1、在宿主機里面
1 3 * * * root cd /data/wwwroot/xxx && docker-compose exec app php think xxx >> /var/log/crontab_xxx.log
docker-compose exec app php think xxx一直執行不成功
2、然后在容器里面安裝crontab,還是執行不成功,關鍵還沒有相關日志。檢查crontab也是啟動的。 /etc/init.d/cron status
3、裝上rsyslog, apt-get install rsyslog, service rsyslog start
查看 /var/log/syslog
Dec 25 09:07:07 1a8e4fd5c766 crontab[15120]: (root) BEGIN EDIT (root) Dec 25 09:07:34 1a8e4fd5c766 crontab[15120]: (root) REPLACE (root) Dec 25 09:07:34 1a8e4fd5c766 crontab[15120]: (root) END EDIT (root) Dec 25 09:08:01 1a8e4fd5c766 cron[15100]: (root) RELOAD (crontabs/root) Dec 25 09:08:01 1a8e4fd5c766 CRON[15133]: Cannot make/remove an entry for the sp
4、修改/etc/pam.d/cron
注釋掉 session required pam_loginuid.so
5、重啟cron,運行成功
參考文檔:https://blog.csdn.net/u013091013/article/details/70939136
還有就是,將這一行添加到dockerfile中
RUN sed -i '/session required pam_loginuid.so/c\#session required pam_loginuid.so' /etc/pam.d/crond
crontab執行還遇到了一個坑,手動執行腳本沒有問題,因為讀取了環境變量,php要寫絕對路徑
/usr/local/bin/php think xxx