Files
docker-example/stacks/watchtower/README.md
2024-10-19 19:46:07 +08:00

1.5 KiB
Raw Blame History

Watchtower

RUN_ONCE=true # 是否只运行一次
CONTAINER_NAME="" # 如果不设置 container_name则会监控所有容器
DOCKER_ARGS=()
WATCHTOWER_ARGS=()
WATCHTOWER_ARGS=(--cleanup)
WATCHTOWER_ARGS=(--remove-volumes)
WATCHTOWER_ARGS=(--rolling-restart)

if [ "$RUN_ONCE" = true ]; then
  WATCHTOWER_ARGS+=(--run-once)
  DOCKER_ARGS+=(--rm)
else
  WATCHTOWER_ARGS+=(--label-enable) # 仅监控并更新标签为 com.centurylinklabs.watchtower.enable 设置为 true 的容器。
  WATCHTOWER_ARGS+=(--schedule "0 0 3 * * *") # 每天凌晨 3 点执行
  DOCKER_ARGS+=(-d)
  DOCKER_ARGS+=(--restart unless-stopped)
  DOCKER_ARGS+=(--name watchtower)
fi

if [ -f ~/.docker/config.json ]; then # 如果 ~/.docker/config.json 存在
  DOCKER_ARGS+=(-v ~/.docker/config.json:/config.json)
fi

docker run "${DOCKER_ARGS[@]}" \
  -e TZ=Asia/Shanghai \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower "${WATCHTOWER_ARGS[@]}" $CONTAINER_NAME

邮件通知

  -e WATCHTOWER_NOTIFICATIONS=email \
  -e WATCHTOWER_NOTIFICATION_EMAIL_FROM=❗️❗️❗️ \
  -e WATCHTOWER_NOTIFICATION_EMAIL_TO=❗️❗️❗️ \
  -e WATCHTOWER_NOTIFICATION_EMAIL_SERVER=❗️❗️❗️ \
  -e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465 \
  -e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=❗️❗️❗️ \
  -e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=❗️❗️❗️ \
  -e WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 \
  -e WATCHTOWER_NOTIFICATIONS_HOSTNAME="$(hostname)" \