logo NodeSeekbeta

Docker 搭建镜像更新提醒服务 diun

可移步博客查看,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: 10firstCheckNotif: 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

效果如下:
20240322214729.png

12
  • 我用的是WatchTower,可以自动更新,好像也支持消息推送

  • @hsukqilee #1 这个我也知道哈哈,不过我怕自动更新不稳,我自己更新要备份好才行

  • 直接rss订阅GitHub仓库地址/releases.atom

  • @真不是MJJ #3 学到了

  • 我 podman + 指定容器设置 autoupdate label

    SCR-20240322-tgak.png

  • @love4taylor #5 没玩过 podman 哈哈哈,我就需要通知就行,更不更新看情况

  • 用什么管理多个docker

  • @telnetnode #7 我的机器不多,一般都是一台机器一两个compose,都是命令操作

  • 直接watchtower自动更新,然后设置邮件提醒就好了。

  • @Bliz333 #9 我不需要自动,更新不更新我来决定 xhj010

12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有15404位seeker

🎉欢迎新用户🎉