背景

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;"