A job scheduler for Docker containers, configured via container labels.
- Documentation: https://deck-chores.readthedocs.io
- Image repository: https://hub.docker.com/r/funkyfuture/deck-chores
- Code repository: https://github.com/funkyfuture/deck-chores
- Issue tracker: https://github.com/funkyfuture/deck-chores/issues
- Free software: ISC license
- 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
andarmv7l
platforms, no emulator involved
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.
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.
It wouldn't be as charming to write this piece of software without these projects:
- APScheduler for managing jobs
- cerberus for processing metadata
- docker-py for Docker interaction
- flake8, mypy, pytest and tox for testing
- Python
- 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
- keep output of job executions
- a rudimentary web ui
- Frank Sachsenheim (maintaining)
- aeri4list
- alpine-digger
- Brynjar Smári Bjarnason