banner
约 1,800 字
6 分钟

AutoDocker 钉钉通知配置:卡片上点一下,容器自己更新

摘要

钉钉是 AutoDocker 的第三个通知渠道。这篇从建应用到搭卡片模板,七步配完:钉钉开放平台建应用、加机器人走 Stream 模式(不用公网 IP、不用备案)、开两项权限、卡片平台拖组件建模板、发版本、拉群取会话 ID、发测试卡片验回调。最后附上实际收到更新卡片、点按钮、容器重建完成的完整过程。

广告以上为推广链接,通过它们购买我会获得少量佣金,你的价格不受影响。

AutoDocker 钉钉通知配置封面

前言

AutoDocker 是个 Docker 镜像更新监测工具:定时巡检本机容器的镜像,发现新版本就往手机上推一张卡片,点一下按钮,它按原配置重建容器,挂载、端口、网络、环境变量一个不丢,失败还能自动回滚。容器与镜像分开管理,没用的镜像可以一键清掉。

前两篇写过飞书和 Telegram 的配置,这篇讲钉钉。钉钉用 Stream 长连接接收按钮回调,不需要公网地址,也不用域名备案和公网 IP,这一点比飞书那套省事。

项目地址:https://github.com/haihaipypy/autodocker

一、钉钉配置流程

本应用用 Stream 长连接接收按钮回调,所以整个流程里不需要你准备任何公网服务。

1. 新建应用

打开钉钉开放平台,走「应用开发 → 钉钉应用」→ 创建应用。建好后在「凭证与基础信息」里复制 Client ID 与 Client Secret。

钉钉开放平台的凭证与基础信息页,Client ID 和 Client Secret 都在这里

把这两个值填进 AutoDocker 左侧面板,点右边的「检测连通性」验一下,通了会自动保存并拉起长连接。

AutoDocker 面板里填入凭据后检测连通性,提示凭据有效、长连接正在建立

注意:左侧还有一个与「钉钉应用」并列的「机器人」入口,那个是旧模型,钉钉官方已说明「将逐渐退出历史舞台,不要用它来创建」。本流程需要的卡片模板关联、权限、版本发布都在「钉钉应用」详情页里,从应用入口建才能一条路走完。

2. 添加机器人

在刚建好的应用里,左侧「应用能力」→ 机器人 → 机器人配置。

配置项

填写内容

机器人名称

AutoDocker

机器人简介

镜像更新提醒(6 字符,留足余量)

机器人描述

发现 Docker 镜像有新版本时推送一张卡片,点卡片上的按钮即可按原配置重建容器,失败自动回滚。

消息接收模式

Stream

机器人图标和消息预览图用下面这两张:

AutoDocker 的应用图标,蓝底白色循环箭头

AutoDocker 的容器列表界面,可作机器人消息预览图

填完大概是这样:

钉钉机器人配置页,各项已填写完成

3. 开权限

左侧「权限管理」,搜到下面两项并开通:

  • Card.Instance.Write(互动卡片实例写权限)

  • qyapi_robot_sendmsg(企业内机器人发送消息)

权限管理页搜到 Card.Instance.Write,点开通

4. 建卡片模板

打开卡片平台,新建模板,按下个章节「模板怎么搭」拖好组件,发布,然后复制模板 ID(形如 xxxx-xxxx.schema)填到左边。

卡片平台新建模板,模板名称填 AutoDocker,卡类型选消息卡片

5. 发布应用版本

左侧「版本管理与发布」→ 创建版本 → 发布。

改了权限、机器人或模板却不发布新版本,等于什么都没改。 现象是配置看着全对,发卡片一直报权限或模板错误。

版本管理与发布页,创建新版本后状态变为已上线

6. 拉群并取会话 ID

钉钉群里 → 群设置 → 智能群助手 → 添加机器人,选你刚建的那个。

在群里添加机器人,搜到 AutoDocker助手

然后在群里 @它说一句话。

在群里 @AutoDocker助手 发一条 hi

回来点左边「读取会话」,列表里会冒出这个群,点一下即自动填入并保存。

AutoDocker 的接收群会话 ID 面板,读取会话后自动填入

二、模板怎么搭

钉钉不允许用代码定义卡片样式,只能自己在平台上搭模板、设变量。操作不复杂,但参数一个都不能错,写错了卡片发出去就是一片空白。

1. 新建三个变量

  • 变量名 title,变量类型:普通文本

  • 变量名 status,变量类型:普通文本

  • 变量名 body,变量类型:富文本

卡片模板的变量面板,建好 title、status、body 三个变量

2. 添加文本组件

从组件库拖 2 个基础文本和 1 个富文本组件到卡片里。

卡片编辑器的组件库,左侧可选基础文本、富文本、单个按钮等组件

3. 设置组件内容

三个组件的内容分别填变量引用:${title}、${status}、body。输入框里敲一个美元符号就会弹出变量列表,点一下就插进去了。此时没有实际数据,画布上看不到东西是正常的。

设置基础文本组件的内容指向 title 变量

4. 添加按钮

在卡片上放三个单个按钮组件,文案分别填 立即更新、稍后提醒、忽略本版本。每个按钮都去「事件」里设「回传请求」,参数如下:

  • 立即更新 → {"action":"update"}

  • 稍后提醒 → {"action":"snooze"}

  • 忽略本版本 → {"action":"ignore"}

单个按钮的事件设置,点击后回传请求,参数填 action 动作

对美观度有要求就自己调样式,只要参数没错就行,改完保存模板。

三、测试回调

1. 发一张测试卡片

点「发送钉钉测试卡片」,页面会挂起等待回调。

AutoDocker 的发送钉钉测试卡片面板,提示等待按钮回调

2. 群里点一下按钮

钉钉群会收到一张测试卡片。这张卡片用的是同一个模板,点上面任意一个按钮都算「回调验证通过」。

钉钉群里收到的测试卡片,带立即更新、稍后提醒、忽略本版本三个按钮

3. 看到回调结果

卡片原地变成「回调已收到」,说明按钮点得动、服务端也收得到。

点按钮后卡片变成回调已收到,回调正常

应用页面同时提示按钮链路正常:

AutoDocker 提示按钮链路正常,已自动启用钉钉通知

这一版加了通知开关,链路一通就自动打开。

通知渠道面板,钉钉显示已启用,飞书和 Telegram 已暂停

点按钮没反应时按顺序查:先点「检测连通性」,它只验凭据和出网,一次能把这两件事说清;连通之后还收不到卡片,再看模板有没有发布、按钮的回传参数有没有配对。卡片收到了但点了没变化,多半是第 5 步的版本没发布。

四、日常使用

1. 收到新版提醒

巡检发现有镜像更新,钉钉群里会收到卡片,容器、镜像、当前版本、可用版本都列在上面。

lucky 有新版本的提醒卡片,列出版本号和同版本别名

2. 点「立即更新」

NAS 收到指令开始拉镜像、重建容器,卡片原地变成进度。

卡片变为正在更新容器,显示任务编号

3. 卡片自动更新结果

拉完、重建完,状态回到同一张卡片上,不用回网页、不用登服务器。

卡片变为更新完成,原有挂载、端口与网络配置保持不变

结尾

这篇只讲钉钉。其他通知渠道的配置,看下面两篇:

END
广告阿里云 · 轻量应用服务器 · AI 部署低至 ¥99 / 年,够跑 Docker去看看 →