deck-chores

https://img.shields.io/docker/pulls/funkyfuture/deck-chores.svg https://images.microbadger.com/badges/image/funkyfuture/deck-chores.svg https://img.shields.io/pypi/v/deck-chores.svg

A job scheduler for Docker containers, configured via container labels.

Features

  • define regular jobs to run within a container context with container and optionally with image labels
  • use date, interval and cron-like triggers
  • set a maximum of simultaneously running instances per job
  • restrict job scheduling to one container per service
  • multi-architecture image supports amd64 and armv7l platforms, no emulator involved

Example

Let’s say you want to dump the database of a Wordpress once a day. Here’s a docker-compose.yml that defines a job that will be handled by deck-chores:

version: '2'

services:
  wordpress:
    image: wordpress
  mysql:
    image: mariadb
    volumes:
      - ./database_dumps:/dumps
    labels:
      deck-chores.dump.command: sh -c "mysqldump --all-databases > /dumps/dump-$$(date -Idate)"
      deck-chores.dump.interval: daily

It is however recommended to use scripts with a proper shebang for such actions. Their outputs to stdout and stderr as well as their exit code will be logged by deck-chores.

Limitations

At the moment deck-chores is designed to run on a single Docker node, not within a cluster of these. Code and documentation contribution covering this are highly encouraged.

Acknowledgements

It wouldn’t be as charming to write this piece of software without these projects:

Roadmap

0.3

  • parse time units for interval triggers
  • handle a global limit on concurrent jobs
  • print jobs when receiving SIGUSR1
  • support for configuring APScheduler’s jitter option on Cron- & IntervalTrigger

0.4

  • keep output of job executions
  • a rudimentary web ui

Authors

  • Frank Sachsenheim (maintaining)
  • aeri4list
  • alpine-digger
  • Brynjar Smári Bjarnason