Как да почистим базата данни на 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)
Винаги първо тестваме, за да видим колко промени ще бъдат направени, без реално да променяме базата.

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
📖
Стъпка 4: Почистване
След приключване е добре да изтрием помощния файл, за да поддържаме контейнера чист:
docker exec <име-на-контейнер> rm wp-cli.phar
Защо този метод е по-добър?
- Гарантирана връзка с DB: Понеже командата се изпълнява „отвътре“, тя използва настройките от твоя
wp-config.php. - Интелигентна замяна: Ако текстът, който заменяте, е част от сложна настройка на тема или плъгин (масив), WP-CLI ще преизчисли дължината на низовете, така че плъгинът да продължи да работи.
- Без остатъчен боклук: Не се налага да променяте Docker образа или да добавяте нови услуги в
docker-compose.yml.
Бонус: Бърз бекъп преди замяната
Винаги е добра практика да имате архивно копие преди масови промени:
docker exec <име-на-контейнер> php wp-cli.phar db export backup.sql --allow-root
Така файлът backup.sql ще се появи в папката на твоя проект и можеш да го възстановиш по всяко време.
Намерихте материала за полезен?
Съдържанието на itpraktika.com е безплатно и ще остане такова.
Ако статията ти е помогнала — можеш да подкрепиш сайта с малка доброволна сума.
Всяко дарение помага за поддръжката и развитието на портала.
