Watchtower — это инструмент для автоматического обновления контейнеров Docker на основе изменений в реестре Docker Hub. Он позволяет автоматически обновлять ваши контейнеры в фоновом режиме, устраняя необходимость вручную обновлять каждый контейнер вручную. В этой статье мы рассмотрим, как установить Watchtower и пример его использования.
Установка Watchtower
Для установки Watchtower необходимо выполнить несколько простых шагов:
- Установите Docker на вашем сервере. Можно использовать официальную документацию Docker для установки на вашей операционной системе.
- Установите Watchtower, запустив следующую команду:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower
Эта команда загрузит образ Watchtower из Docker Hub и запустит его в фоновом режиме. Он будет следить за изменениями в вашем реестре Docker Hub и автоматически обновлять ваши контейнеры.
Использование Watchtower
После установки Watchtower вы можете использовать его для автоматического обновления ваших контейнеров. Для этого необходимо запустить ваш контейнер с дополнительным тегом «latest». Например, если вы запускаете контейнер Nginx, то команда запуска будет выглядеть следующим образом:
docker run -d --name nginx --restart always -p 80:80 nginx:latest
Watchtower будет следить за тегом «latest» в реестре Docker Hub и обновлять ваш контейнер, если он станет устаревшим.
Вы также можете использовать Watchtower для обновления контейнеров с другими тегами. Для этого вы можете указать тег в команде запуска контейнера, например:
docker run -d --name myapp --restart always myapp:1.0.0
Watchtower будет следить за образом «myapp:1.0.0» в реестре Docker Hub и обновлять ваш контейнер, если он станет устаревшим.
Уведомление от Watchtower в Telegram
Watchtower позволяет отправлять уведомления в мессенджеры при обновлении контейнера. Полный список поддерживаемых мессенджеров доступен на офф сайте. В данной статье мы разберем как настроить уведомление для мессенджера Telegram.
Создание бота в Telegram
Для получения уведомлений в Telegram от Watchtower нам необходимо будет создать бота и получить ChatID канала для отправки уведомлений. Подробная информация о создании бота доступна в подробной инструкции от Telegram.
Получение chat_id для телеграм-канала
Для отправки уведомлений в телеграм-канал необходимо получить chat_id канала. Для этого добавьте бота в ваш телеграм-канал и отправьте в канал любое сообщение. Затем перейдите по ссылке https://api.telegram.org/bot<YourBotToken>/getUpdates, заменив <YourBotToken> на токен вашего бота. Вы получите ответ от Telegram API, содержащий chat_id канала. Скопируйте его.
Настройка Watchtower
Теперь настройте Watchtower на отправку уведомлений в ваш телеграм-канал. Для этого в команду установки Watchtower добавим переменные среды которые отвечают за настройку уведомлений
docker run -d --name watchtower \
-e WATCHTOWER_LIFECYCLE_HOOKS=1 \
-e WATCHTOWER_NOTIFICATIONS=shoutrrr \
-e WATCHTOWER_NOTIFICATION_URL=telegram://<YourBotToken>@telegram/?channels=<YourChatId> \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower
Если же вы используете docker-compose то этот же код будет выглядеть следующим образом
version: '3.3'
services:
watchtower:
container_name: watchtower
environment:
- WATCHTOWER_LIFECYCLE_HOOKS=1
- WATCHTOWER_NOTIFICATIONS=shoutrrr
- WATCHTOWER_NOTIFICATION_URL=telegram://<YourBotToken>@telegram/?channels=<YourChatId>
command: --interval 30
volumes:
- '/var/run/docker.sock:/var/run/docker.sock'
image: containrrr/watchtower
Замените <YourBotToken> и <YourChatId> на соответствующие значения, которые вы получили в предыдущих шагах.
По умолчанию Watchtower проверяет контейнеры с интервалом в 24 часа, чтобы уменьшить данный интервал до 30 секунд достаточно добавить команду command: —interval 30
Теперь Watchtower будет отправлять уведомления о процессе обновления контейнеров в ваш телеграм-канал. Если все настроено правильно, вы должны увидеть уведомления в канале при обновлении контейнеров.
Пример отправляемого уведомления
Found new portainer/portainer-ce:latest image (f031e549070f)
Found new amir20/dozzle:latest image (9602cf218ba7)
Found new traefik:latest image (d1e26b5f8193)
Stopping /traefik (a262f7327b90) with SIGTERM
Stopping /dozzle (27f1f5fd4110) with SIGTERM
Stopping /portainer (3ddfa13bb8fc) with SIGTERM
Creating /portainer
Creating /dozzle
Creating /traefik
В заключение, Watchtower — это простой и удобный инструмент для автоматического обновления ваших контейнеров Docker. Он позволяет избежать необходимости вручную обновлять каждый контейнер и сохранить вашу инфраструктуру в актуальном состоянии. Установка и использование Watchtower занимает всего несколько минут и значительно облегчает вашу работу с Docker.