Job scheduler for Docker containers, configured via labels.
Frank Sachsenheim 6a94dcc69e
Bumps version to 0.3.1
4 months ago
deck_chores Fixes logging of version at startup 6 months ago
docs Updates and fixes the docs 7 months ago
hooks release-multiimage: Pulls remote images before creating the manifest 7 months ago
tests Tests job execution with call details 7 months ago
.dockerignore Do not include scripts from /hooks in images 2 years ago
.gitignore Updates .gitignore 1 year ago
.pyup.yml create config file 2 years ago
.readthedocs.yml docs: Adds config for rtd to build w/ Python 3.6 1 year ago
.travis.yml Travis: Make tox installation simple again 7 months ago
CONTRIBUTING.rst Adds tests for docs and updates hyperlink targets 7 months ago
Dockerfile Updates Alpine to 3.8 7 months ago
Dockerfile-dev Minor fixes 7 months ago
HISTORY.rst Bumps version to 0.3.1 4 months ago
LICENSE Initial commit 2 years ago Fixes and simplifies how build metadata is obtained. 1 year ago
Makefile Code formatted with black 1 year ago
README.rst Updates and fixes the docs 7 months ago
mypy.ini Updates mypy config 7 months ago
pyproject.toml Reformats code w/ black 8 months ago
requirements-dev.txt Code formatted with black 1 year ago Bumps version to 0.3.1 4 months ago
tox.ini Resorts the initial inspection of containers and depend on Python 3.7 7 months ago



.. image::

.. image::

.. image::

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

* Documentation:
* Image repository:
* Code repository:
* Issue tracker:
* Free software: ISC license


- define regular jobs to run within a container context with container and optionally with image
- 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


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*:

.. code-block:: yaml

version: '2'

image: wordpress
image: mariadb
- ./database_dumps:/dumps
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 `_


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