Watchtower 自动容器更新

Watchtower 监听镜像仓库更新,自动拉取新镜像并滚动重启容器。配合 release-please 实现零人工部署。

#type / howto #status / growing #tech / ops #resource / docker

[!info] related notes

Watchtower 自动容器更新

工作原理

Watchtower 定期检查镜像仓库中 prod-latest 标签是否有更新,如果有就拉取新镜像并重启容器。

配置

watchtower:
  image: containrrr/watchtower
  environment:
    WATCHTOWER_CLEANUP: 'true'           # 更新后删除旧镜像
    WATCHTOWER_POLL_INTERVAL: '300'      # 5 分钟检查一次
    WATCHTOWER_LABEL_ENABLE: 'true'      # 只更新带 label 的容器
    WATCHTOWER_ROLLING_RESTART: 'true'   # 滚动重启
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    - /root/.docker/config.json:/config.json:ro  # ACR 认证

业务容器需要加 label:

api:
  labels:
    com.centurylinklabs.watchtower.enable: 'true'

部署标签策略

bodysense-api:v0.3.0-prod.20260625-abc123  # 版本 tag(不可变,用于回滚)
bodysense-api:prod-latest                    # 最新 tag(Watchtower 监控)

回滚

修改 docker-compose.prod.yml 中的 image tag 为上一个好的版本,重启。

创建于 2026/6/25 更新于 2026/6/25