关于docker的crontab问题


我们的系统,需要运行很多的crontab任务, 大家都是怎么解决这个问题的?
1. 将crontab直接运行在宿主机? 因为大部分定时任务都是php脚本,这样我需要在宿主机也安装php,感觉不是很好。
2. 启动一个专门的crontab服务容器?这样可行吗? 或者有没有什么限制?
已邀请:

oilbeater - 北大学渣@灵雀云

赞同来自:


可以 crontab 启动 Docker 容器,容器里是个一次性 php 任务。

longmeng

赞同来自:


感觉这样把操作变复杂了。

tuxknight

赞同来自:


专门用来跑crontab的镜像是可以做出来的。

例子:

base images:

crond:base
包含crond服务镜像。

基于crond:base按任务做镜像,
FROM crond:base

添加crontab配置文件,记得把需要使用的环境变量等都加到crontab中,格式自己看文档

ADD

增加自己的任务脚本,路径要和crontab中调用的路径一致

ADD

这样就做好了一个镜像。

然后如果是systmd,可以增加类似下面的service,管理起来方便很多。
<pre>

Description=phpjob
After=docker.service
Requires=docker.service

TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill job01
ExecStartPre=-/usr/bin/docker rm job01

ExecStartPre=/usr/bin/docker pull job01

ExecStart=/usr/bin/docker run --restart=always --name job01 cronjob:v3
ExecStop=/usr/bin/docker stop job01

ExecStopPost=/usr/bin/docker rm job01

WantedBy=multi-user.target
</pre>

要回复问题请先登录注册