A modern, low-footprint job scheduler for Docker environments, acting as a cron replacement.
Ofelia is a job scheduler built for Docker environments, functioning as a modern replacement for cron. It allows users to schedule and execute commands directly on running Docker containers, as new containers, or on the host system. It solves the problem of managing scheduled tasks in containerized applications by integrating natively with Docker's API.
DevOps engineers, system administrators, and developers who manage Docker-based applications and need reliable, container-native job scheduling.
Developers choose Ofelia for its simplicity, Docker-native design, and lightweight footprint compared to traditional cron or complex scheduling wrappers. It offers flexible configuration via Docker labels and config files, making it easy to integrate into existing Docker workflows.
A docker job scheduler (aka. crontab for docker)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Directly runs commands in running containers or creates ephemeral containers using Docker's API, simplifying job management in containerized environments as shown in job-exec and job-run examples.
Supports both INI-style config files and Docker labels for job definitions, allowing seamless integration into existing Docker workflows, including Docker Compose setups.
Includes drivers for email, file saving, and Slack with options like mail-only-on-error, providing detailed execution reports without additional tools.
Offers a no-overlap option to prevent concurrent job execution, reducing risks of race conditions in scheduled tasks.
Requires access to the Docker daemon socket or TCP connection, posing security risks if not properly secured with proxies or TLS, as noted in the socket proxy examples.
Logging drivers are restricted to mail, save, and Slack; lacks native integration with modern monitoring stacks like Prometheus or ELK, which may require custom solutions.
Docker labels configuration can be verbose and error-prone, especially with long label formats and the need for filters like --docker-filter, complicating setup.