带有WebUI的cron替代品Dagu

2024-09-01 05:12
文章标签 cron webui 带有 替代品 dagu

本文主要是介绍带有WebUI的cron替代品Dagu,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

什么是 Dagu ?

Dagu 是一个强大的 Cron 替代品,它带有一个 Web UI。它允许你将命令之间的依赖关系定义为有向无环图(DAG),使用声明式的 YAML 格式。Dagu 的设计易于使用、自包含且无需编码,非常适合小型项目。

安装

在群晖上以 Docker 方式安装。因为镜像发布在 ghcr.io ,所以采用命令行方式安装

需要用 SSH 客户端登录到群晖后再执行

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 dagu 和 子目录
mkdir -p /volume1/docker/dagu/{dags,data,logs}# 进入 dagu 目录
cd /volume1/docker/dagu# 修改目录权限
chmod a+rw {dags,data,logs}# 运行容器
docker run -d \--restart unless-stopped \--name dagu \-p 8210:8080 \-v $(pwd)/dags:/home/dagu/.dagu/dags \-v $(pwd)/data:/home/dagu/.dagu/data \-v $(pwd)/logs:/home/dagu/.dagu/logs \ghcr.io/dagu-dev/dagu:latest \dagu start-all

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'services:dagu:image: ghcr.io/dagu-dev/dagu:latestcontainer_name: dagurestart: unless-stoppedports:- "8210:8080"volumes:- "./dags:/home/dagu/.dagu/dags"- "./data:/home/dagu/.dagu/data"- "./logs:/home/dagu/.dagu/logs"command: ["dagu", "start-all"]

然后执行下面的命令

# 新建文件夹 dagu 和 子目录
mkdir -p /volume1/docker/dagu/{dags,data,logs}# 进入 dagu 目录
cd /volume1/docker/dagu# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8210 就能看到主界面

NEW 新建 DAG

输入名称

自动跳转到 SPEC 界面

下拉会看到编辑界面

EDIT 进入编辑模式

粘贴下面的内容

mail 执行器可用于发送电子邮件。这对于发送通知或警报很有用

smtp:host: "smtp.88.com"port: "25"username: "wbsu2003@88.com"password: "<第三方邮件客户端密码>"steps:- name: step1executor:type: mailconfig:to: wbsu2003@hotmail.comfrom: wbsu2003@88.comsubject: "Dagu 测试邮件"message: |Hello world,send by Dagu~- name: step2command: echo done!depends:- step1

SAVE 保存

上拉,找到 START 执行

执行完成

查看日志

如果设置没问题,很快就会收到邮件

进入 FileStation 中,可以看到对应的 yaml 文件

另一种情况是调用脚本文件,举个简单的例子,通过脚本来获取 pm2.5 的值

steps:- name: send_GET_requestcommand: /home/dagu/.dagu/dags/weather.sh

这里比较大的坑是要用容器内的路径,默认 WORKDIR/home/dagu/,所以要用完整的路径

weather.sh 的内容

#!/bin/sh# 设置环境变量
export CITY_ID=101020100# 发送 GET 请求并获取响应体
response=$(curl -s -X GET "http://t.weather.itboy.net/api/weather/city/${CITY_ID}" -H "Authorization: ")# 检查 curl 命令是否成功执行
if [ $? -eq 0 ]; then# 使用 jq 打印 JSON 数据# echo $response | jq .pm25=$(echo $response | jq -r '.data.pm25')  echo "pm25: $pm25"
elseecho "Failed to fetch data"
fi

关于天气的接口,老苏在之前的文章中提过,你只要将 CITY_ID 替换成你所在的城市即可

文章传送门:用Changedetection监控网页的变化

因为是 Dagu 是通过容器安装的,所以需要让 Dagu 支持我们在
脚本中用到的 curljq

首先要用 root 身份进入容器

# 进入容器
docker exec -it -u root dagu /bin/sh

然后在容器中继续执行下面的命令

# 更新包索引
apk update# 安装 curl
apk add curl

# 安装 jq
apk add jq

然后回到 DaguStart

Log 查看

没问题的话,会看到当前的 pm2.5

参考文档

GitHub - dagu-dev/dagu: Yet another cron alternative with a Web UI, but with much more capabilities. It aims to solve greater problems.
地址:https://github.com/dagu-dev/dagu

Dagu — Dagu 文档
地址:https://dagu.readthedocs.io/zh/latest/

Dagu-一个带有Web UI的cron替代品 | Noise&Blog
地址:https://www.noiseblogs.top/posts/a86216b9/

这篇关于带有WebUI的cron替代品Dagu的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1126034

相关文章

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

SpringBoot @Scheduled Cron表达式使用方式

《SpringBoot@ScheduledCron表达式使用方式》:本文主要介绍SpringBoot@ScheduledCron表达式使用方式,具有很好的参考价值,希望对大家有所帮助,如有... 目录Cron 表达式详解1. 表达式格式‌2. 特殊字符解析3. 常用示例‌4. 重点规则5. 动态与复杂场景‌

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

Ollama整合open-webui的步骤及访问

《Ollama整合open-webui的步骤及访问》:本文主要介绍如何通过源码方式安装OpenWebUI,并详细说明了安装步骤、环境要求以及第一次使用时的账号注册和模型选择过程,需要的朋友可以参考... 目录安装环境要求步骤访问选择PjrIUE模型开始对话总结 安装官方安装地址:https://docs.

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资