使用 Docker 可以迅速在 VPS 上运行服务,而不用配置和修改环境。Docker 服务的更新通过拉取最新镜像实现,当运行的 Docker 数目多了之后,保持镜像最新就成为了一项琐碎的工作。使用 Watchtower 可以便捷地监控 Docker 服务是否有最新镜像,自动拉取最新镜像、更新服务并删除旧有镜像。
Docker compose 是用于定义和运行多容器 Docker 应用程序的工具。在配置好 docker-compose.yml
文件后,使用 docker compose up -d
即可方便上线服务,我的全部 Docker 服务都使用这一方式部署。
以下是 Watchtower 的 docker-compose.yml
文件设置。
Docker Compose 文件
version: "3.3"
services:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Asia/Shanghai
- WATCHTOWER_DEBUG=true
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_SCHEDULE=0 0 4 * * ?
# - WATCHTOWER_POLL_INTERVAL=43200
其中,WATCHTOWER_SCHEDULE
和 WATCHTOWER_POLL_INTERVAL
均为设置 Watchtower 运行频次的指令,两个方式任选一个。前者使用 Cron 格式,在固定时间运行;后者的单位为秒 (S),经过固定时间间隔运行。
设置 Watchtower 通知服务
Watchtower 使用 Shutrrr 发送通知。以下为设置 Telegram bot 通知:
- WATCHTOWER_LIFECYCLE_HOOKS=True
- WATCHTOWER_NOTIFICATIONS=shoutrrr
- WATCHTOWER_NOTIFICATION_URL=telegram://bot_token@telegram/?channels=user-id
- 通过
@BotFather
创建自己的通知机器人,并获取bot_token
- 通过
@GetIDs Bot
获取user-id
推荐 IOS 用户使用 Bark 设置通知 [*]: - WATCHTOWER_NOTIFICATION_URL=
- WATCHTOWER_LIFECYCLE_HOOKS=True
- WATCHTOWER_NOTIFICATIONS=shoutrrr
- WATCHTOWER_NOTIFICATION_URL=bark://:devicekey@host/path
设置部分 Docker 禁止更新
在不希望被 Watchetower 监控更新的 Docker 服务中添加环境变量 [*]
- com.centurylinklabs.watchtower.enable = false
推荐阅读
欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论。