本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

crontab Docker 镜像下载 - 轩辕镜像

crontab 镜像详细信息和使用指南

crontab 镜像标签列表和版本信息

crontab 镜像拉取命令和加速下载

crontab 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

crontab
willfarrell/crontab
自动构建

crontab 镜像详细信息

crontab 镜像标签列表

crontab 镜像使用说明

crontab 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

用于Docker的Cron任务管理工具,可在其他容器中运行复杂定时任务,支持易读的调度语法、注释及任务触发功能。
68 收藏0 次下载activewillfarrell镜像

crontab 镜像详细说明

crontab 使用指南

crontab 配置说明

crontab 官方文档

docker-crontab

一个基于docker的简单包装工具,允许在其他容器中运行复杂的Cron任务。

支持的标签和Dockerfile链接

  • latest (Dockerfile)

为什么创建此项目?

是的,我知道mcuadros/ofelia(280MB),它是本项目的主要灵感来源。这是一个很棒的项目,请勿误解。只是它缺少一些我认为支持Docker发展方向所需的关键企业特性。

特性

  • 支持易读的调度语法。
  • 允许添加注释,方便提醒update_script.sh等脚本的实际功能。
  • 使用image启动镜像。
  • 使用container在容器中运行命令。
  • 使用project在扩展容器的实例上运行命令。
  • 支持通过trigger在定时任务完成后触发其他容器中的脚本。

Config.json

  • name:作业文件名的可读名称,会转换为slug格式。可选。
  • comment:包含在crontab条目中的注释。可选。
  • schedule:Cron调度语法,详见***。例如@hourly@every 1h30m* * * * *。必填。
  • command:在crontab容器或Docker容器/镜像中运行的命令。必填。
  • image:Docker镜像名称(例如library/alpine:3.5)。可选。
  • project:Docker Compose/Swarm项目名称。可选,仅在包含container时适用。
  • container:完整容器名称或容器别名(如果设置了project)。如果包含image则忽略此项。可选。
  • dockerargs:Docker run/exec命令行参数,用于完全控制。默认为空字符串。
  • trigger:docker-crontab子集对象数组。子集包含:imageprojectcontainercommanddockerargs
  • onstart:在crontab容器启动时运行命令,设为true。可选,默认为false。

查看config.sample.json获取示例。

json
[{
	"schedule":"@every 5m",
	"command": "/usr/sbin/logrotate /etc/logrotate.conf"
},{
	"comment":"重新生成证书并重新加载nginx",
	"schedule":"43 6,18 * * *",
	"command":"sh -c 'dehydrated --cron --out /etc/ssl --domain ${LE_DOMAIN} --challenge dns-01 --hook dehydrated-dns'",
	"dockerargs":"--env-file /opt/crontab/env/letsencrypt.env -v webapp_nginx_tls_cert:/etc/ssl -v webapp_nginx_acme_challenge:/var/www/.well-known/acme-challenge",
	"image":"willfarrell/letsencrypt",
	"trigger":[{
		"command":"sh -c '/etc/scripts/make_hpkp ${NGINX_DOMAIN} && /usr/sbin/nginx -t && /usr/sbin/nginx -s reload'",
		"project":"conduit",
		"container":"nginx"
	}],
	"onstart":true
}]

如何使用

命令行

bash
docker build -t crontab .
docker run -d \
    -v /var/run/docker.sock:/var/run/docker.sock:ro \
    -v ./env:/opt/env:ro \
    -v /path/to/config/dir:/opt/crontab:rw \
    -v /path/to/logs:/var/log/crontab:rw \
    crontab

与docker-compose一起使用

  1. 确定docker-compose容器使用的网络名称
    • 使用docker network ls查看现有网络
    • 如果docker-compose.ymlmy_dir目录中,网络可能为my_dir_default
    • 否则阅读docker-compose文档
  2. 在docker-crontab的config.json中添加dockerargs
    • 使用--network NETWORK_NAME将新容器连接到docker-compose网络
    • 使用--rm --name NAME指定容器名称
    • 例如:"dockerargs": "--network my_dir_default --rm --name my-best-cron-job"

Dockerfile

Dockerfile
FROM willfarrell/crontab

COPY config.json ${HOME_DIR}/

Logrotate Dockerfile

Dockerfile
FROM willfarrell/crontab

RUN apk add --no-cache logrotate
RUN echo "*/5 *	* * *  /usr/sbin/logrotate /etc/logrotate.conf" >> /etc/crontabs/logrotate
COPY logrotate.conf /etc/logrotate.conf

CMD ["crond", "-f"]

日志记录 - 开发环境

所有stdout输出会被捕获、格式化并保存到/var/log/crontab/jobs.log。设置LOG_FILE/dev/null可禁用日志。

示例:e6ced859-1563-493b-b1b1-5a190b29e938 2017-06-18T01:27:10+0000 [info] Start Cronjob **map-a-vol** map a volume

grok格式:CRONTABLOG %{DATA:request_id} %{TIMESTAMP_ISO8601:timestamp} \[%{LOGLEVEL:severity}\] %{GREEDYDATA:message}

TODO

  • 支持文件变更时自动重新生成crontab(发送HUP信号?)
  • 允许在主机上运行命令(使用--privileged?)
  • 编写测试
  • 设置TravisCI

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

"Docker加速体验非常流畅,大镜像也能快速完成下载。"