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 канала. Скопируйте его.
Для надсилання повідомлень у телеграм-канал необхідно отримати 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> на соответствующие значения, которые вы получили в предыдущих шагах.
Замініть <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.