Job scheduler for Docker containers, configured via labels.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
deck_chores
docs
hooks
tests
.dockerignore
.gitignore
.pyup.yml
.readthedocs.yml
.travis.yml
CONTRIBUTING.rst
Dockerfile
Dockerfile-dev
HISTORY.rst
LICENSE
MANIFEST.in
Makefile
README.rst
mypy.ini
pyproject.toml
requirements-dev.txt
setup.py
tox.ini

README.rst

deck-chores

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