Watchtower 自动容器更新
Watchtower 监听镜像仓库更新,自动拉取新镜像并滚动重启容器。配合 release-please 实现零人工部署。
#type / howto
#status / growing
#tech / ops
#resource / docker
[!info] related notes
- 前置: release-please
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 为上一个好的版本,重启。