Sign inSign up

nicomt/ckron

By nicomt

•Updated over 2 years ago

Image
0

4.5K

nicomt/ckron repository overview

⁠ckron

A cron-style job scheduler for docker

NPM Version Test Docker Image Size

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.

⁠Install

If you have Node installed:

$ npm i -g ckron

If you only have Docker installed:

$ docker pull nicomt/ckron

⁠Usage

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

For production is recommended to setup a service in something like systemd⁠, upstart or forever⁠. A service will ensure the daemon is restarted in case of an unexpected failure

⁠Configuration

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:

⁠Tasks

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 container
  • signal: Send a signal to the main process inside the container. Similar to docker kill --signal

See tasks reference⁠ for more documentation

⁠Jobs

Jobs are sets of tasks scheduled with a cron-like syntax. See jobs reference⁠ for more documentation

⁠Notifiers

Notification channels for failed jobs. See notifiers reference⁠ for more documentation

⁠YAML Full Example

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

Tag summary

Content type

Image

Digest

sha256:99e6da5dd…

Size

53.5 MB

Last updated

over 2 years ago

docker pull nicomt/ckron