Оновлення контейнерів з What’s Up Docker

Оновлення образів часто закривають вразливості, покращують продуктивність і додають нові можливості. Але робити все вручну — марна витрата часу.
What’s Up Docker (WUD) — це інструмент, який нарешті дає повний контроль над тим, що, коли і як оновлюється:
- гнучке фільтрування тегів (patch, minor, major)
- можливість сповіщати замість оновлювати
- підтримка кількох реєстрів і приватних репозиторіїв
Далі покажемо, як швидко інтегрувати його у свій стек.
Встановлення WUD за допомогою Docker Compose
Створи окрему теку для налаштувань WUD і зайди в неї:
mkdir wud
cd wud
Тепер відкрий редактор і створи файл docker-compose.yml
. Встав у нього ось цей шаблон:
services:
whatsupdocker:
image: getwud/wud
container_name: wud
environment:
- WUD_WATCHER_LOCAL_CRON=0 6 * * *
- WUD_AUTH_BASIC_MY_USER=<YOUR_USERNAME>
- WUD_AUTH_BASIC_MY_HASH=<YOUR_PASSWORD>
ports:
- 3000:3000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Головне — блок environment.
Тут ми задаємо, як саме WUD буде працювати. Наприклад, WUD_WATCHER_LOCAL_CRON=0 6 * * *
означає, що WUD перевірятиме контейнери щодня о 6:00 ранку, але ти можеш змінити під свій графік.
Що таке «спостерігачі»?
Кожен механізм, який перевіряє оновлення, — це «спостерігач» (watcher). Їх можна назвати як завгодно, головне — дотримуйся шаблону змінної:WUD_WATCHER_{імʼя}_CRON
.
У прикладі вище використано LOCAL, але ти можеш вказати інше імʼя. WUD підтримує кілька типів спостерігачів:
- Local
Моніторить образи, що використовуються у локальних контейнерах на хості, де запущено WUD. - DockerHub
Напряму підключається до DockerHub API та моніторить нові версії образів. - GitHub
Слідкує за новими версіями образів, які публікуються в GitHub Releases або GitHub Container Registry (GHCR). - Quay
Підтримує моніторинг образів з реєстру Quay.io. - GitLab
Відстежує образи з GitLab Container Registry. - Harbor
Підтримує enterprise-рішення Harbor для приватного контейнерного реєстру. - AWS ECR
Інтегрується з Amazon Elastic Container Registry.
Налаштування доступу
Змінні WUD_AUTH_BASIC_MY_USER і WUD_AUTH_BASIC_MY_HASH
— це логін і хеш пароля для доступу до вебінтерфейсу WUD. З ними просто і безпечно.
Ім’я користувача — будь-яке. А от пароль потрібно захешувати у форматі Apache MD5 (APR1). Не встановлювати ж для цього весь Apache, правда? Ось короткий варіант:
openssl passwd -apr1
Команда попросить ввести пароль і видасть щось на кшталт:
$apr1$zv6vdUFS$g0mH9DjK7ON4FGtps1Xpt0
Щоб WUD сприйняв цей хеш, треба додати подвійну $
перед кожним $
. Тобто:
$$apr1$$zv6vdUFS$$g0mH9DjK7ON4FGtps1Xpt0
Встав у docker-compose.yml
замість шаблонних значень:
- WUD_AUTH_BASIC_MY_USER=bobby
- WUD_AUTH_BASIC_MY_HASH=$$apr1$$zv6vdUFS$$g0mH9DjK7ON4FGtps1Xpt0
Запуск
Тепер збережи файл і запусти контейнер у фоновому режимі:
docker compose up -d
Якщо щось не працює — перевір логи:
docker logs wud -f
Як відкрити вебінтерфейс WUD?
Щоб зайти у WUD, відкрий браузер і перейди на http://localhost:3000 (або http://<ip-адреса-сервера>:3000
, якщо працюєш віддалено). Введи свої логін і пароль — готово.
Важливо: у продакшн-середовищі завжди став WUD за зворотний проксі (Nginx, Caddy, Traefik тощо) і використовуй HTTPS.
Налаштування WUD
WUD вже запущений, але поки що він просто працює у фоновому режимі. Щоб він почав надсилати сповіщення або автоматично оновлювати контейнери, потрібно додати потрібні змінні в docker-compose.yml або прописати мітки у контейнерах.
Вебінтерфейс — це лише панель перегляду, всі налаштування виконуються через змінні та мітки.
Як налаштувати сповіщення WUD?
Щоб отримувати сповіщення про нові версії контейнерів, у WUD потрібно налаштувати тригери. Список підтримуваних сервісів великий: Apprise, Discord, Slack, SMTP, Telegram та інші.
У цьому прикладі — налаштування сповіщень через Gmail SMTP. Якщо хочеш використати Gmail, спершу створи пароль застосунку.
Далі в docker-compose.yml
додай змінні у розділ environment
:
- WUD_TRIGGER_SMTP_GMAIL_HOST=smtp.gmail.com
- WUD_TRIGGER_SMTP_GMAIL_PORT=465
- WUD_TRIGGER_SMTP_GMAIL_USER=<YOUR-GMAIL-ACCOUNT>
- WUD_TRIGGER_SMTP_GMAIL_PASS=<THE-APP-PASSWORD>
- WUD_TRIGGER_SMTP_GMAIL_FROM=<YOUR-GMAIL-ACCOUNT>
- WUD_TRIGGER_SMTP_GMAIL_TO=<YOUR-GMAIL-ACCOUNT>
- WUD_TRIGGER_SMTP_GMAIL_TLS_ENABLED=true
Потім заміни шаблонні значення на свої. Щоб застосувати зміни, виконай:
docker compose down
docker compose up -d
У вебінтерфейсі WUD зайди в Configuration
→ Triggers
, обери smtp/gmail
, натисни TEST, підтвердь і перевір, чи отримав тестовий лист.
Автоматичне оновлення контейнерів
Якщо хочеш, щоб WUD автоматично оновлював контейнери, додай у docker-compose.yml
:
- WUD_TRIGGER_DOCKER_LOCAL_PRUNE=true
Якщо цей рядок не додавати, WUD просто сповіщатиме й оновлення доведеться робити вручну.
Оновлення файлів Docker Compose
Якщо у файлі docker-compose.yml
ти вказуєш конкретні версії образів (не latest
), після автоматичного оновлення контейнера WUD, наступний ручний перезапуск знову підтягне стару версію з файлу.
Щоб цього не сталося — налаштуй WUD на автоматичне оновлення файлів Compose. Приклад:
- WUD_TRIGGER_DOCKERCOMPOSE_NGINX_FILE=/wud/nginx/docker-compose.yml
- WUD_TRIGGER_DOCKERCOMPOSE_NGINX_PRUNE=true
І обов’язково змонтуй правильний файл:
- /compose/file/location/docker-compose.yml:/wud/nginx/docker-compose.yml
Маєш кілька Compose-файлів? Створюй окремий тригер для кожного. Але якщо ти використовуєш latest
, цей крок можна пропустити.
Як обмежити роботу тригерів?
Стандартно всі тригери застосовуються до всіх контейнерів. Щоб це змінити, використовуй мітку wud.trigger.include
— вона дозволяє вказати, які тригери запускати для конкретного контейнера.
Приклад для Nginx:
labels:
wud.trigger.include: smtp.gmail,dockercompose.nginx
Інші контейнери можуть мати, наприклад, тільки:
labels:
wud.trigger.include: smtp.gmail
Перезапусти контейнери — WUD підхоплює зміни автоматично.
Як запускати тригери вручну?
Якщо хочеш сам обирати момент, коли запускати оновлення, додай змінну:
- WUD_TRIGGER_DOCKERCOMPOSE_NGINX_AUTO=false
У цьому випадку WUD лише сповіщатиме про оновлення, а оновити контейнер можна буде вручну через кнопку RUN у вебінтерфейсі.
Вимкнення контейнерів з моніторингу
Щоб WUD повністю ігнорував певний контейнер, додай мітку:
labels:
wud.watch: false
Або навпаки — якщо хочеш, щоб WUD стежив тільки за вибраними контейнерами, додай у файл WUD:
- WUD_WATCHER_LOCAL_WATCHBYDEFAULT=false
І в кожному потрібному контейнері пропиши:
labels:
wud.watch: true
Післяслово
Ура, ти перетнув фінішну пряму. WUD налаштовано і контейнери оновлюються без твоєї участі — саме той рівень DevOps-спокою, до якого варто прагнути.
Якщо виникнуть труднощі з Docker, рекомендуємо пройти структурований курс «Docker. Практикум з адміністрування» — після нього станеш справжнім профі.
А якщо хочеш підтягнути інші моменти для роботи в DevOps — переглянь весь наш каталог курсів. Ми зібрали все найнеобхідніше для впевненого стека DevOps-інженера.