背景
netstub项目中, nginx服务 是跑在docker容器中运行, 长时间运行会生成大量的access.log, 需要配置定时清理日志. 将crontab 直接打到镜像中, 不用每次启动容器都去配置
配置方法
dockerfile中添加如下行,
# 安装 crontabs
RUN yum -y install crontabs
# 添加定时任务 每日清空access.log文件
RUN echo "* * */1 * * cat /dev/null > /var/log/nginx/access.log" >> /var/spool/cron/root
# 启动crond
CMD /usr/sbin/crond -i
重新build image
启动容器,进入容器查看任务
sh-4.4# crontab -l
* * */1 * * cat /dev/null > /var/log/nginx/access.log
使用
实际使用中crond是跑在openresty的容器中, 所以修改resty dockerfile 如下,CMD行中执行两个命令
CMD /usr/sbin/crond && /usr/local/openresty/bin/openresty -g "daemon off;"