共計(jì) 1360 個(gè)字符,預(yù)計(jì)需要花費(fèi) 4 分鐘才能閱讀完成。
本篇內(nèi)容主要講解“怎么給 debian 的 docker 容器添加 crontab 定時(shí)任務(wù)”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓丸趣 TV 小編來(lái)帶大家學(xué)習(xí)“怎么給 debian 的 docker 容器添加 crontab 定時(shí)任務(wù)”吧!
現(xiàn)在大部分的 docke 鏡像是基于 debian
# cat /etc/issue
debian gnu/linux 9 \n \l
docker 容器是不支持后臺(tái)服務(wù)的,像 systemctl service crontab 這些后臺(tái)運(yùn)行的服務(wù)是不能通過(guò)
run systemctl start nginx
類似這種方案實(shí)現(xiàn)的,你必須寫自己的 entrypoint 腳本來(lái)啟動(dòng)。本文記錄了基于 debian 的 docker 容器設(shè)置定時(shí)任務(wù)的方式。
案例背景
我部署一個(gè)前端項(xiàng)目,使用 nginx 鏡像,由于官方鏡像是基于 debian, 對(duì)比 alpine 也不覺(jué)得體積差多少,于是就使用 debian 作為容器系統(tǒng)。
dockerfile 看起來(lái)是這樣的
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,然后復(fù)制我們的靜態(tài)文件,最后啟動(dòng) nginx, 啟動(dòng) cron。
說(shuō)說(shuō)為啥會(huì)有定時(shí)任務(wù)。可以看到我們是有定時(shí)清理腳本的,由于 nginx 自己沒(méi)提供日志處理模塊,所以才有清理腳本。清理腳本需要定時(shí)執(zhí)行,于是就有定時(shí)任務(wù),于是發(fā)現(xiàn) docker 容器是不支持 service 的。
總的來(lái)說(shuō)一共有以下幾步:
install
apt-get install cron
add to crontab
crontab /etc/cron.d/your-crontab
docker 啟動(dòng)時(shí)啟動(dòng) cron
entrypoint cron xxxxx
ps, 很多人還是喜歡 alpine 做鏡像母體的,因?yàn)樾 5@個(gè) linux 命令確實(shí)不熟悉的。
到此,相信大家對(duì)“怎么給 debian 的 docker 容器添加 crontab 定時(shí)任務(wù)”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是丸趣 TV 網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!