可移步博客查看,Docker 搭建镜像更新提醒服务 diun
有些项目可能刚刚开始还不太稳定,并且此时更新也很频繁,所以如果想要尝鲜的话就要及时更新镜像。此时,需要一个可以监控镜像是否有更新的服务,就比如今天的主角 Diun。
Diun 在 Docker 镜像有更新时可以及时发现并通知,通知支持多种方式如 Email、Gotify 等。
官网:https://crazymax.dev/diun/
搭建之前需要创建配置文件:
# 创建目录
mkdir /home/docker/diun
# 创建配置文件
cat > /home/docker/diun/diun.yml <<EOF
# 配置文件目录
db:
path: diun.db
# 调度任务
watch:
workers: 2
schedule: "0 */6 * * *"
# 第一次运行是否通知
firstCheckNotif: false
defaults:
# 监控所有 tag
watchRepo: false
# 当有新镜像或镜像有更新时通知
notifyOn:
- new
- update
providers:
docker:
watchStopped: true
watchByDefault: true
# 配置通知,需要配置成自己的
notif:
mail:
host: smtp-mail.outlook.com
port: 587
ssl: false
insecureSkipVerify: true
from: <[email protected]>
username: <[email protected]>
password: <password>
to:
- [email protected]
templateTitle: '{{ .Entry.Image }} {{ if (eq .Entry.Status "new") }}已可用{{ else }}已更新{{ end }}'
templateBody: |
云平台镜像更新提醒:
**{{ .Entry.Image }}** {{ if .Entry.Image.HubLink }} ([链接]({{ .Entry.Image.HubLink }})){{ end }}
您通过 {{ .Entry.Provider }} 订阅的镜像 {{ if (eq .Entry.Status "new") }}已可用{{ else }}已更新{{ end }}
**{{ .Entry.Image.Domain }}** 镜像仓库 (由 _{{ escapeMarkdown .Meta.Hostname }}_ 主机触发)
此镜像已于 **{{ .Entry.Manifest.Created.Format "2006-01-02 15:04:05 UTC" }}** {{ if (eq .Entry.Status "new") }}创建{{ else }}更新{{ end }}
摘要为 `{{ .Entry.Manifest.Digest }}`,适用于 **{{ .Entry.Manifest.Platform }}** 平台。
需要帮助或有问题?请访问 {{ .Meta.URL }} 并留下问题。
EOF
这里需要注意的是,notif 是配置通知的地方,可以配置多种通知,参考 通知配置。
踩过的坑,当配置
workers: 10
、firstCheckNotif: true
,并且通知配置的 qq 邮箱,由于发送邮件过快,qq 邮箱的授权码直接失效了。建议通知邮件配置成其他邮件,并且 workers 不要配置太多。
弄好配置文件后,直接启动容器即可:
docker run -d \
--restart always \
--name diun \
-v /home/docker/diun/data:/data \
-v /home/docker/diun/diun.yml:/diun.yml:ro \
-v /var/run/docker.sock:/var/run/docker.sock \
-e "TZ=Asia/Shanghai" \
-e "LOG_LEVEL=info" \
-e "LOG_JSON=false" \
crazymax/diun:latest serve
效果如下:
我用的是WatchTower,可以自动更新,好像也支持消息推送
@hsukqilee #1 这个我也知道哈哈,不过我怕自动更新不稳,我自己更新要备份好才行
直接rss订阅GitHub仓库地址/releases.atom
@真不是MJJ #3 学到了
我 podman + 指定容器设置 autoupdate label
@love4taylor #5 没玩过 podman 哈哈哈,我就需要通知就行,更不更新看情况
用什么管理多个docker
@telnetnode #7 我的机器不多,一般都是一台机器一两个compose,都是命令操作
直接watchtower自动更新,然后设置邮件提醒就好了。
@Bliz333 #9 我不需要自动,更新不更新我来决定