Crate cfc

source ·
Expand description

Cron for Containers is a lightweight cron daemon for containers that aims to be an in-place replacement for ofelia wherever mail capabilities are not required.

Currently, only docker and podman are supported.

WIP: Careful, fresh paint! Only the local job is currently implemented. Come back later or open an issue on the repository if you’re interested in the project.

§Installation

Install the executable with cargo:

cargo install cfc

§Usage

You may either provide a configuration file or extract configuration from container labels.

The scheduling format is an “augmented” cron format inspired by go’s implementation. E.g. @every 10m`` or 0 10 * * * *`.

Note: The cron format does not have to contain the seconds specifier

You can configure four different kind of jobs:

job-exec: Executed in a running container. job-run: Executed in a new container, using a specific image. job-local: Executed on the host running ofelia. job-service-run: Executed in a new “run-once” service, for running inside a swarm

§INI-style config

[job-exec "job-executed-on-running-container"]
schedule = @hourly
container = my-container
command = touch /tmp/cfc

§YAML-style config

job-executed-on-running-container:
    kind: job-exec
    schedule: "@hourly"
    container: my-container
    command: touch /tmp/cfc

§Label-based config

docker run -it --rm \
  --label cfc.job-run.my-test-job.schedule="@every 5s" \
  --label cfc.job-run.my-test-job.command="echo Hello world" \
  alpine:latest sleep 9999

§Ofelia compatibility

Add --ofelia to the command-line when running cfc to run in compatibility mode.

§Note

Though both an executable and a library are made available, the library is only intended for consumption by the executable and its API should not be considered stable.

Modules§

Macros§

  • Perform a match on all JobInfo enum members and apply the same processing to all of them