A cron-style job scheduler for docker
ckron is a versatile and straightforward tool to schedule operations on containerized applications.
ckron is heavily inspired by ofelia but attempts to improve on it by allowing multiple tasks per job. Using tasks, you can compose complex workflows with a few off-the-shelf images and follow Docker's motto of one process per container.
If you have Node installed:
$ npm i -g ckron
If you only have Docker installed:
$ docker pull nicomt/ckron
If you installed it in Node:
$ ckron daemon --config /path/to/config.yml
If you installed it in Docker:
$ docker run --rm -it \
-v $PWD/config.yml:/etc/ckron/config.yml \
-v /var/run/docker.sock:/var/run/docker.sock \
nicomt/ckron daemon
NOTE: For production is recommended to use docker with a restart policy or create a service in something like systemd, upstart or forever. A service will ensure the daemon is restarted in case of an unexpected failure
The configuration consists of a YAML file, which is meant to have familiar docker compose like syntax. The main sections of the config file are the following:
Single operations that can be carried out by a job. Tasks currently supported are:
run: Runs a command inside of a new container, using a specific image.exec: Runs a new command in a running containersignal: Send a signal to the main process inside the container. Similar todocker kill --signal
See tasks reference for more documentation
Jobs are sets of tasks scheduled with a cron-like syntax. See jobs reference for more documentation
Notification channels for failed jobs. See notifiers reference for more documentation
Run with $ ckron daemon --config /path/to/config.yml
tasks:
test-01:
type: run
command: printenv
environment:
HELLO: World
image: ubuntu:latest
jobs:
job-01:
schedule: "*/30 * * * * *"
on_error: ["email-dev"]
run_on_init: true
tasks:
- test-01
notifiers:
email-dev:
type: email
smtp_host: smtp.server.com
smtp_port: 25
smtp_auth:
user: XXXXXXX
pass: XXXXXXX
to: [email protected]
from: '"Ckron Scheduler" <[email protected]>'