Я строю конвейер Wordpress CI / CD на основе Docker и некоторых пользовательских сценариев развертывания. Поток довольно стандартный:
- Dev-машина загружает полный архив веб-сайта и дамп базы данных во внешний репозиторий
- Существует похожая докерская инфраструктура Wordpress (web, db, app), используемая на компьютере разработчика и на производственных серверах
- При запуске развертывания производственная машина загружает код и базу данных в локальный репозиторий и выводит из него новый Docker
Все это прекрасно работает, но проблема, с которой я сталкиваюсь, заключается в том, что Wordpress по умолчанию включает полный URL в редактируемые страницы. Поэтому, если разработчик добавляет изображение на страницу, на странице базы данных будет код
<img src="sampledevmachine.local/image1.jpg">
Теперь есть два решения, которые приходят к нему. Либо сценарий развертывания выполняет поиск и замену в файле дампа базы данных, либо на компьютерах разработчиков может быть настроен их файл hosts, чтобы Wordpress считала, что к нему обращается производственный домен.
Оба эти решения звучат немного "грязно". Поэтому мне любопытно, как другие подойдут к такой проблеме и как бы вы установили «элегантный» CI / CD для Wordpress.