Watchtower — это инструмент для автоматического обновления Docker-контейнеров. Он отслеживает изменения в образах контейнеров, автоматически обновляет их до последней версии и отправляет уведомления, что упрощает поддержку актуального состояния приложений.
Основные функции:
- Автоматическое обновление: Watchtower проверяет Docker Hub или другие реестры на наличие обновлений образов и перезапускает контейнеры с новыми версиями.
- Поддержка тегов: Можно настроить обновление только для определённых тегов образов.
- Оповещения: Интеграция с уведомлениями (например, через Slack, Discord, Telegram) о выполненных обновлениях.
- Гибкость: Поддержка различных конфигураций, включая использование приватных реестров.
Запуск Watchtower
NOTE
В данном примере будут использоваться уведомления в Телеграм.
Создаем файл docker-compose
:
docker-compose.yml
---
services:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
environment:
- WATCHTOWER_NOTIFICATIONS_HOSTNAME=${WATCHTOWER_NOTIFICATIONS_HOSTNAME}
- WATCHTOWER_NOTIFICATIONS=${WATCHTOWER_NOTIFICATIONS}
- WATCHTOWER_NOTIFICATION_URL=${WATCHTOWER_NOTIFICATION_URL}
- TZ=Europe/Moscow
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
command: --rolling-restart --cleanup --schedule "0 0 3 * * *"
Затем создаем .env
файл в котором указываем token
и chat id
телеграм бота:
.env
WATCHTOWER_NOTIFICATIONS_HOSTNAME=hostname
WATCHTOWER_NOTIFICATIONS=shoutrrr
WATCHTOWER_NOTIFICATION_URL=telegram://<telegram_token>@telegram/?channels=<bot_chat_id>
Небольшое пояснение переменных и команд
WATCHTOWER_NOTIFICATIONS_HOSTNAME=hostname
- хостнейм, который будет использоваться в уведомленияхWATCHTOWER_NOTIFICATIONS=shoutrrr
- использование библиотека уведомленийshoutrrr
--rolling-restart
- перезапускает по одному образу за раз вместо остановки и запуска всех сразу--cleanup
- удаляет старые образы после обновления--schedule "0 0 3 * * *"
- интервал проверки и обновлений (в данном примере проверка выполняется каждый день в три часа ночи)
Больше информации можно найти в документации Watchtower.
TIP
Чтобы исключить контейнер из автоматического обновления необходимо добавить метку:
labels:
- 'com.centurylinklabs.watchtower.enable=false'
Заключение
Теперь Watchtower будет автоматически обновлять на контейнеры и присылать уведомления в Telegram.
← Предыдущая заметкаНастройка Crowdsec для защиты SSH