给debian的docker容器添加crontab定时任务
2020-03-11 17:52
141 查看
现在大部分的docke镜像是基于debian
# cat /etc/issue Debian GNU/Linux 9 \n \l
Docker容器是不支持后台服务的,像systemctl service crontab这些后台运行的服务是不能通过
RUN systemctl start nginx
类似这种方案实现的,你必须写自己的entrypoint脚本来启动。本文记录了基于Debian的docker容器设置定时任务的方式。
案例背景
我部署一个前端项目,使用nginx镜像,由于官方镜像是基于debian,对比alpine也不觉得体积差多少,于是就使用debian作为容器系统。
Dockerfile看起来是这样的
FROM nginx:1.15.10 MAINTAINER Ryan Miao COPY sources.list /etc/apt/sources.list RUN apt-get update && apt-get install -y net-tools procps curl wget vim telnet cron 、 && apt-get autoremove && apt-get clean && rm -rf /var/lib/apt/lists/* RUN mkdir -p /data/log/nginx && mkdir -p /data/web && rm /etc/nginx/conf.d/default.conf ADD default.conf /etc/nginx/conf.d/ ADD index.html /data/web/ ADD clean_log.sh /data/ COPY clean-cron /etc/cron.d/clean-cron RUN chmod 755 /data/clean_log.sh && crontab /etc/cron.d/clean-cron ENTRYPOINT nginx && cron && /bin/bash
大概就是安装cron,然后替换nginx config, 然后复制我们的静态文件,最后启动nginx, 启动cron。
说说为啥会有定时任务。可以看到我们是有定时清理脚本的,由于nginx自己没提供日志处理模块,所以才有清理脚本。清理脚本需要定时执行,于是就有定时任务,于是发现docker容器是不支持service的。
总的来说一共有以下几步:
install
apt-get install cron
add to crontab
crontab /etc/cron.d/your-crontab
docker启动时启动cron
ENTRYPOINT cron && xxxxx
ps, 很多人还是喜欢alpine做镜像母体的,因为小。但这个Linux命令确实不熟悉的。
总结
以上所述是小编给大家介绍的给debian的docker容器添加crontab定时任务 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
您可能感兴趣的文章:
相关文章推荐
- Linux添加crontab定时任务
- Unix crontab命令 添加定时任务
- Linux 添加定时任务,crontab -e 命令与直接编辑 /etc/crontab 文件
- Linux 添加定时任务,crontab -e 命令与直接编辑 /etc/crontab 文件
- linux 使用crontab添加定时任务,日志显示已经执行但是任务没有成功调用解决方法
- Linux下添加定时任务命令crontab -e
- crontab 定时任务添加
- linux 利用crontab添加定时任务
- 用crontab、crond在嵌入式系统中添加定时任务
- crontab 添加定时任务
- linux定时任务crontab--虚拟机ubuntu在添加定时任务的时候,如何取消nano的默认编辑,改用vim编辑器
- linux 中通过shell在crontab定时任务添加任务
- crontab添加了定时任务却无法执行
- Solaris10 为用户添加定时任务(crontab)
- 添加Crontab定时任务
- 用crontab、crond在嵌入式系统中添加定时任务
- crontab添加新的定时任务
- crontab添加定时任务
- /etc/crontab 添加定时任务 无效
- Linux使用笔记3-crontab添加定时任务