飞牛nas 开启Watchtower为Docker容器自动升级并发送邮件提醒

在自动更新过程中,尽管会出现连接超时的报告,但容器仍能够正常更新。此外,配置通知功能后,每次执行时都会通知存在的错误。

若不需要通知,可删除通知配置相关的环境变量。

Watchtower 是一个用于自动更新 Docker 容器的开源工具。它能够检测您运行的 Docker 容器是否有新版本可用,并自动更新这些容器,从而帮助您保持容器应用程序的安全性和稳定性。

主要功能:

  • 自动容器更新:Watchtower 可以定期检查 Docker Hub 或者其他容器仓库中的镜像,如果发现新版本,它将自动下载新的镜像并更新正在运行的容器。
  • 定期检查:您可以配置 Watchtower 以定期检查容器,以确保容器始终处于最新状态。您可以设置检查的时间间隔。
  • 邮件通知:Watchtower 可以配置为在更新容器时发送邮件通知,以便您及时了解容器的变化情况。
  • 灵活性:您可以选择性地排除某些容器不受自动更新的影响,以满足特定需求。
  • 日志记录:Watchtower 会记录容器更新的日志,以便您可以随时查看更新历史。
  • 支持多种容器仓库:除了 Docker Hub,Watchtower 还支持其他容器仓库,因此您可以使用自己喜欢的容器镜像。

1、compose配置

下面是我目前自己使用的compose文件。仅供大家参考使用。

version: "3"
services:
  watchtower:
    image: containrrr/watchtower:latest
    container_name: watchtower
    restart: always
    environment:
        - TZ=Asia/Shanghai   # 时区
#        - WATCHTOWER_MONITOR_ONLY=true                 #使用此参数则仅提醒有更新而不自动升级容器
        - WATCHTOWER_NOTIFICATION_TITLE_TAG=FN-Docker   # 邮件标题
        - WATCHTOWER_NOTIFICATIONS=email             # 启用email
        - WATCHTOWER_NOTIFICATION_EMAIL_FROM=fromaddress@gmail.com    # 发送邮箱
        - WATCHTOWER_NOTIFICATION_EMAIL_TO=toaddress@gmail.com    # 接收邮箱
        - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.gmail.com     # smtp服务器
        - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465    # 必须使用加密模式发送,不能使用25端口
        - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=fromaddress@gmail.com   # 发件用户名
        - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=app_password   # 发件密码
        - WATCHTOWER_NOTIFICATION_EMAIL_DELAY=10    # 延迟10秒发送
#        - WATCHTOWER_NOTIFICATION_LEVEL=info      # 信息等级
        
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock   # 访问 Docker 守护进程
    command: --cleanup --schedule "0 0 3 * * *" --debug   # 每天凌晨 3 点执行更新,删除旧镜像,开启debug

2、环境变量

2.1、参数

变量名描述
WATCHTOWER_CLEANUPtrue / false更新后删除旧映像
WATCHTOWER_SCHEDULE0 0 * * * ?精确定时,Cron表达式(6位表达式非常规的5位),0 0 * * * ?:表示每小时的0分0秒时执行,不能与WATCHTOWER_POLL_INTERVAL同时使用
WATCHTOWER_POLL_INTERVAL86400轮询间隔(以秒为单位),默认24小时,不能与WATCHTOWER_SCHEDULE同时使用
WATCHTOWER_NO_STARTUP_MESSAGEtrue / false请勿在 watchtower 启动后发送消息。否则,将出现信息级通知。
WATCHTOWER_TIMEOUT60s强制停止容器之前的超时时间。
WATCHTOWER_DISABLE_CONTAINERSmysql不监控更新的容器名称列表,使用逗号或空格分隔的字符串列表,默认情况下使用标签禁用更新,若配置此变量,则此变量配置的规则优先。标签禁用更新的配置方式查看2.3
WATCHTOWER_ROLLING_RESTARTtrue / false一次重新启动一个容器,而不是一次停止和启动所有容器。默认:false

2.2、邮箱通知

变量名示例(QQ邮箱)描述
WATCHTOWER_NOTIFICATIONS_LEVELinfo控制用于通知的日志级别。可选值:panic、 fatal、 errorwarn、 infodebug 、 trace,默认:info
WATCHTOWER_NOTIFICATIONSemail设置通知类型
WATCHTOWER_NOTIFICATION_EMAIL_FROM1@qq.com发送通知的电子邮件地址
WATCHTOWER_NOTIFICATION_EMAIL_TO2@qq.com将接收通知的电子邮件地址
WATCHTOWER_NOTIFICATION_EMAIL_SERVERsmtp.qq.com发送电子邮件的 SMTP 服务器
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT465用于连接到 SMTP 服务器以发送电子邮件的端口
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER1@qq.com用于向 SMTP 服务器进行身份验证的用户名
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD1@qq.com的授权码用于向 SMTP 服务器进行身份验证的密码
WATCHTOWER_NOTIFICATION_EMAIL_DELAY2发送通知之前的延迟,以秒为单位
WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG要包含在主题标记中的前缀。在运行多个 Watchtower 时很有用。注意:这将影响所有通知类型。

2.3、容器标签禁用监视更新

services:
    mysql:
        container_name: mysql
        image: mysql:8
        。。。
        # 添加标签内容,禁用此容器的监视更新
        labels:
            - com.centurylinklabs.watchtower.enable=false

以mysql为例:

在compose配置中添加labels节点;

labels节点下添加- com.centurylinklabs.watchtower.enable=false关闭容器的监视更新;

此时Watchtower轮训检查时将会忽略mysql容器。

除非注明,否则均为 曼诺 原创文章,转载请注明出处:https://www.wamano.com/2025/4490.html

(0)
打赏 微信 扫一扫 微信 扫一扫 支付宝 扫一扫 支付宝 扫一扫
Mano的头像Mano
上一篇 2025年2月18日 14:02
下一篇 2025年2月25日 17:12

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈邮件:admin@example.com工作时间:周一至周五,9:30-18:30,节假日休息

关注微信