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]>'