设置cron
在Linux中定时任务一般使用cron,ubuntu的官方镜像中已经包含了cron,可以直接使用。但是因为cron是后台执行,我们还需要另外一个进程来保持container的运行。 可以通过使用tail -F
,来检测一些log文件保持进程,也可以在container启动的时候设置 -restart alwasy
。
下面是以ubuntu为例的Dockerfile
:
run.sh
tail -F /var/log/syslog /var/log/cron.log
这里用来输出系统和cron日志,并保持container运行
crontabfile example
python /code/run.py
是要运行的定时任务。关于cron配置,可以参考这篇文章
build镜像
将Dockerfile
, run.sh
, crontabfile
放在脚本跟目录下,运行docker build -t your-image-name .
创建镜像。
测试
在脚本根目录下创建run.py
脚本来测试镜像。
run.py
运行
在有docker engining的机器上运行docker run you-image-name
启动定时任务,也可以根据具体情况添加其他启动参数。
代码
文本代码托管在yanqiw/cron-in-docker.
使用如下代码来快速运行代码:
container启动后,在控制台可以看到每分钟输出的”I am running by cron”.
参考文章
aptible/docker-cron-example