Как да почистим базата данни на WordPress в Docker чрез WP-CLI

Как да почистим базата данни на WordPress в Docker чрез WP-CLI

Почистване на база данни WordPress в Docker е важна задача, когато искате да поддържате сайта си бърз и оптимизиран. Често при миграция, премахване на стари плъгини или изчистване на нежелани текстове се налага масова замяна в базата данни. Най-сигурният инструмент за това е WP-CLI, тъй като той не „чупи“ сериализираните данни (serialized data) в WordPress.

Когато WordPress работи в Docker контейнер без инсталиран WP-CLI, стандартните методи често дават грешки при свързване с базата. Ето най-чистият и работещ метод:

Проблемът

Стандартните Docker образи на WordPress нямат вграден WP-CLI. Стартирането на външен CLI контейнер често води до мрежови грешки (Error establishing a database connection), защото новият контейнер не „вижда“ базата данни на стария по същия начин.

Решението: „Инжектиране“ на WP-CLI в работещия контейнер

Този метод е най-безопасен, защото използваме PHP средата, която вече е свързана с базата данни.

Стъпка 1: Изтегляне на WP-CLI вътре в контейнера

Вместо да инсталираме нищо перманентно, изтегляме преносимата версия на инструмента (.phar файл) директно в работещия контейнер:

docker exec -it <име-на-контейнер> curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

(Замени <име-на-контейнер> с твоето, например: itpraktika-wordpress-itpraktika-1)

Стъпка 2: Пробна проверка (Dry Run)

Винаги първо тестваме, за да видим колко промени ще бъдат направени, без реално да променяме базата.

почистване на база данни WordPress Docker
docker exec -it <име-на-контейнер> php wp-cli.phar search-replace 'стария-текст' 'новия-текст' --path=/var/www/html --allow-root --dry-run
  • search-replace: Търси и заменя.
  • 'стария-текст' 'новия-текст': Ако искате просто да изтриете нещо, оставете вторите кавички празни: ''.
  • --dry-run: Показва отчет, но не записва нищо.

Стъпка 3: Реално изпълнение

Ако отчетът от Стъпка 2 изглежда коректно, пускаме същата команда, но без флага --dry-run:

docker exec -it <име-на-контейнер> php wp-cli.phar search-replace 'стария-текст' 'новия-текст' --path=/var/www/html --allow-root
📖
Може да ви е интересно още
Защо Ubuntu и Windows 11 станаха толкова тежки — и има ли изход за стария хардуер?

Стъпка 4: Почистване

След приключване е добре да изтрием помощния файл, за да поддържаме контейнера чист:

docker exec <име-на-контейнер> rm wp-cli.phar

Защо този метод е по-добър?

  1. Гарантирана връзка с DB: Понеже командата се изпълнява „отвътре“, тя използва настройките от твоя wp-config.php.
  2. Интелигентна замяна: Ако текстът, който заменяте, е част от сложна настройка на тема или плъгин (масив), WP-CLI ще преизчисли дължината на низовете, така че плъгинът да продължи да работи.
  3. Без остатъчен боклук: Не се налага да променяте Docker образа или да добавяте нови услуги в docker-compose.yml.

Бонус: Бърз бекъп преди замяната

Винаги е добра практика да имате архивно копие преди масови промени:

docker exec <име-на-контейнер> php wp-cli.phar db export backup.sql --allow-root

Така файлът backup.sql ще се появи в папката на твоя проект и можеш да го възстановиш по всяко време.

open source spirit
🛠️
$

Намерихте материала за полезен?

Съдържанието на itpraktika.com е безплатно и ще остане такова.
Ако статията ти е помогнала — можеш да подкрепиш сайта с малка доброволна сума. Всяко дарение помага за поддръжката и развитието на портала.

PayPal Revolut

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *


Колко е 4 + 2 ? (въведете числото)