deck-chores 使用教程
项目介绍
deck-chores 是一个用于 Docker 容器的工作调度器,通过容器标签进行配置。它允许用户在 Docker 容器中定义和调度任务,支持单主机和 Docker Swarm 集群环境。deck-chores 的核心功能包括任务触发、输出日志管理以及任务定义的灵活配置。
项目快速启动
在单主机上启动
通常情况下,您可以在一个容器中运行 deck-chores:
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock funkyfuture/deck-chores:1
或者使用 docker-compose:
version: "3.7"
services:
officer:
image: funkyfuture/deck-chores:1
restart: unless-stopped
environment:
TIMEZONE: Asia/Shanghai
volumes:
- /var/run/docker.sock:/var/run/docker.sock
在 Docker Swarm 上启动
deck-chores 可以在 Docker Swarm 集群中运行,但必须部署在所有节点上:
docker service create --mode global --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock funkyfuture/deck-chores:1
应用案例和最佳实践
定义一个任务
以下是一个在 Docker Compose 文件中定义任务的示例:
version: "3.7"
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
最佳实践
- 使用脚本:推荐使用带有适当 shebang 的脚本来执行任务,这样可以更好地管理输出和错误日志。
- 避免中间容器任务触发:在构建镜像时,避免在 deck-chores 监控的主机上构建,以防止中间容器任务触发。
典型生态项目
deck-chores 依赖于以下项目:
- APScheduler:用于管理任务调度。
- cerberus:用于处理元数据。
- docker-py:用于与 Docker 交互。
- flake8, mypy, pytest, tox:用于测试 Python 代码。
这些项目共同构成了 deck-chores 的生态系统,确保了其稳定性和可靠性。