You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Portainer自动拉取并重新部署latest标签镜像?

自动化更新Docker Compose Stack的Latest镜像

方案1:利用Portainer Webhook+定时任务

Portainer自带Webhook功能,可触发「Pull and Redeploy」动作,结合系统定时任务就能实现自动化:

  • 进入Portainer的目标Stack详情页,打开「Webhooks」选项
  • 创建新Webhook,选择「Pull and redeploy」动作,复制生成的Webhook地址
  • 用系统定时工具(Linux用cron,Windows用任务计划程序)每天定时发送POST请求到该地址。例如用curl执行:
    curl -X POST https://你的Portainer地址/api/webhooks/xxxxxx
    
  • 配置cron每天凌晨2点执行的规则示例:
    0 2 * * * curl -X POST https://你的Portainer地址/api/webhooks/xxxxxx
    

方案2:Shell脚本+定时任务

不依赖Portainer的话,直接用脚本配合定时任务完成更新:

  • 编写Shell脚本(比如update-stack.sh):
    #!/bin/bash
    cd /你的docker-compose文件目录
    # 拉取最新镜像
    docker-compose pull
    # 重启服务(仅更新镜像有变化的容器)
    docker-compose up -d
    
  • 给脚本添加执行权限:chmod +x update-stack.sh
  • 配置cron每天凌晨2点执行脚本并记录日志:
    0 2 * * * /脚本路径/update-stack.sh >> /var/log/stack-update.log 2>&1
    

方案3:使用Watchtower工具

Watchtower是专门用于自动更新Docker容器的工具,可监控镜像更新并自动拉取重启:

  • 在你的docker-compose.yaml中添加Watchtower服务:
    services:
      # 你的原有服务
      your-service:
        image: 你的镜像名:latest
        ...
      # 新增Watchtower服务
      watchtower:
        image: containrrr/watchtower
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
        # 设置每天凌晨2点检查更新,--cleanup会删除旧镜像
        command: --schedule "0 0 2 * * *" --cleanup
        # 可选:只监控指定服务,避免更新其他容器
        # command: --schedule "0 0 2 * * *" --cleanup your-service
    
  • 启动Stack后,Watchtower会按设定周期检查镜像,发现更新自动拉取并重启对应容器。若镜像仓库需要认证,需给Watchtower配置仓库凭证。

内容的提问来源于stack exchange,提问作者sleekster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 07:51:02