Ofelia 项目使用教程
1. 项目介绍
Ofelia 是一个现代且低内存占用的 Docker 作业调度器,旨在替代传统的 cron 工具。Ofelia 基于 Go 语言开发,特别适用于 Docker 环境。它能够直接在 Docker 容器中执行命令,支持在运行中的容器或新容器中执行任务,并且配置灵活,支持 INI 文件和 Docker 标签两种配置方式。
2. 项目快速启动
2.1 安装 Ofelia
Ofelia 可以通过 Docker 快速部署。以下是使用 Docker 运行 Ofelia 的示例:
docker run -it --rm \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
mcuadros/ofelia:latest daemon --docker
2.2 配置 Ofelia
Ofelia 支持两种配置方式:INI 文件和 Docker 标签。
2.2.1 使用 INI 文件配置
创建一个配置文件 config.ini
:
[job-exec "job-executed-on-running-container"]
schedule = @hourly
container = my-container
command = touch /tmp/example
[job-run "job-executed-on-new-container"]
schedule = @hourly
image = ubuntu:latest
command = touch /tmp/example
[job-local "job-executed-on-current-host"]
schedule = @hourly
command = touch /tmp/example
然后运行 Ofelia 并指定配置文件路径:
docker run -it --rm \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v $(pwd)/config.ini:/etc/ofelia/config.ini \
mcuadros/ofelia:latest daemon --config=/etc/ofelia/config.ini
2.2.2 使用 Docker 标签配置
在目标容器上添加标签来配置 Ofelia:
docker run -it --rm \
--label ofelia.job-local.my-test-job.schedule="@every 5s" \
--label ofelia.job-local.my-test-job.command="date" \
mcuadros/ofelia:latest daemon --docker
3. 应用案例和最佳实践
3.1 定时备份数据库
使用 Ofelia 可以轻松设置定时备份任务。例如,每天凌晨 2 点备份数据库:
[job-exec "backup-database"]
schedule = 0 2 * * *
container = db-container
command = mysqldump -u user -p password database > /backup/db-$(date +\%F).sql
3.2 清理日志文件
定期清理日志文件以节省磁盘空间:
[job-local "clean-logs"]
schedule = @daily
command = find /var/log -type f -name "*.log" -mtime +7 -delete
4. 典型生态项目
Ofelia 可以与其他 Docker 生态项目结合使用,例如:
- Docker Swarm: 在 Swarm 集群中使用 Ofelia 调度任务。
- Prometheus: 结合 Prometheus 监控 Ofelia 的运行状态。
- Grafana: 使用 Grafana 可视化 Ofelia 的调度任务执行情况。
通过这些生态项目的结合,可以构建一个强大的自动化运维平台。