Оновлення WordPress до версії 7


3 хвилини

Зустрічаємо WordPress 7

Реліз нової мажорної версії WordPress 7 – це завжди важлива подія, яка приносить нові можливості, оптимізацію та оновлення безпеки. Здавалося б, процес оновлення давно зведений до натискання однієї кнопки в панелі керування. Проте, коли ваш сайт розгорнуто як WordPress в Docker-середовищі, стандартний клік “Оновити” – це лише половина справи. У цій інструкції ми розберемо, як правильно зробити бекапи, уникнути помилок mysqldump та перезібрати контейнери без втрати даних.

Wordpress 7

Нижче я поділюся своїм досвідом, як правильно та безпечно провести оновлення WordPress у Docker-середовищі.

Як в мене все влаштовано

Мій проєкт працює в Docker з використанням кількох пов’язаних контейнерів, які описані в docker-compose.yml. Архітектура виглядає так:

  • База даних: mysql:8.4
  • Вебсервер: nginx:stable-alpine
  • Кеш: redis:alpine (для Object Cache)
  • PHP/Ядро: Кастомний образ на базі wordpress:fpm-alpine, куди додатково компілюється розширення Redis через Dockerfile.

Файли самого WordPress винесені на хост-машину через volume (./ostrich:/var/www/html), що робить систему стійкою і дозволяє зручно керувати контентом.

Первинна контейнеризація: Якщо ви тільки плануєте перехід на таку архітектуру, перегляньте мій базовий гайд про перенесення WordPress в Docker.

Резервне копіювання: файли та база даних

Оскільки файли сайту прокинуті через volume, їхнє архівування займає кілька секунд:

tar -czvf wp_files_backup_$(date +%F).tar.gz ./ostrich

Бекап бази даних (і вирішення помилки Access denied)

Під час дампу бази з MySQL 8.4 можна зіткнутися з такою помилкою при використанні команди:

docker compose exec db sh -c 'mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" --no-tablespaces wordpress' > wp_db_backup_$(date +%F).sql

Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces

Це відбувається через те, що у нових версіях MySQL утиліта mysqldump за замовчуванням намагається експортувати інформацію про табличні простори (tablespaces), на що у звичайного користувача бази WordPress немає прав. Оскільки для відновлення сайту ця інформація абсолютно не потрібна, достатньо додати прапорець --no-tablespaces:

docker compose exec db sh -c 'mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" --no-tablespaces wordpress' > wp_db_backup_$(date +%F).sql

По завершенню бекапа в робочій директорії з’явиться два файли:

  • wp_db_backup_2026-05-21.sql
  • wp_files_backup_2026-05-21.tar.gz

Тепер спокійно можна переходити до оновлення.

Оновлення через адмінку

Завдяки тому, що файли WordPress змонтовані на хост через volumes, ми можемо спокійно натиснути кнопку оновлення безпосередньо в панелі адміністратора WordPress.

Система завантажить нові файли ядра версії 7 та самостійно перезапише їх у локальній директорії ./ostrich. Візуально сайт вже оновлено, але в Docker-середовищі є ще один критичний крок.

Вебсервер: Оскільки в стеку docker-compose використовується Nginx, прочитайте моє порівняння: тест швидкодії WordPress: Apache vs Nginx.

Перезбірка контейнера

Якщо зупинитися на попередньому етапі, ми отримаємо нові файли WordPress 7, але старий базовий образ wordpress:fpm-alpine із застарілою версією PHP та системних бібліотек. Для великих релізів це може стати причиною серйозних конфліктів.

Щоб синхронізувати системні залежності та оновити PHP до тієї версії, з якою постачається свіжий Docker-образ WordPress, контейнер потрібно перезібрати:

docker compose build --no-cache wordpress
docker compose up -d wordpress

Під час цього процесу Docker стягне найсвіжіший базовий образ, наново встановить туди розширення Redis та запустить оновлений контейнер. Наші файли (вже оновлені до 7-ї версії) та база даних при цьому безпечно підтягнуться з відповідних томів.

Моніторинг: Для контролю за станом оновленого стеку налаштуйте моніторинг активності докер-контейнерів у Zabbix.

Висновки

Оновлення WordPress у Docker-середовищі вимагає трохи глибшого розуміння процесів, ніж на звичайному хостингу. Проте цей підхід дає повний контроль над системою. Ми можемо використовувати зручність оновлення через адмінку, підтримуючи при цьому системні бібліотеки та PHP в актуальному стані завдяки перезбірці образу. А головне – у разі будь-якого збою ми маємо готові бекапи бази та файлів для миттєвого відкату.