Как деплоить сайт, если на продакшене есть уникальный контент?
Сайт на php. Деплой с помощью capistrano и bitbucket.
Сейчас сайтом пользуются люди, пишут на нем статьи, а самое главное - загружают фотографии.
Сайт необходимо изменять и улучшать, деплоить новые версии на продакшн. При деплое из bitbucket копируется свежий релиз сайта с изменениями, подтягиваются библиотеки в vendors, подключается БД. Но как быть с изображениями, которые залили пользователи на прежний сайт? В bitbucket их, естественно, нет. Как обычно поступают в таком случае?
все просто, Павел: директория с картинками выносится из сайта и линкуется тем же самым капистрано:
:linked_dirs
default: []
Listed directories will be symlinked into the release directory during deployment.
Can be used for persistent directories like uploads or other data. See Structure for the exact directories.
Павел Гоголинский кстати, их еще удобно использовать для стафа, который редко обновляется.
у меня в них, например, живут фреймворки/либы/etc - все что не связанно непосредственно с кодом приложения.
это позволяет сократить и время деплоя и размер репозиториев.
А как лучше поступить с конфигом БД? Что б не менялся и был разным на dev и prod серверах?
1) Удалить из vcs, поместить его в linked_files, один раз настроить на production и забыть.
2) Создать db-prod.php и db-dev.php, хранить оба в vcs, использовать настройку БД в зависимости от окружения. Типа:
У меня в репозитории bitbucket хранится локальная версия сайта. В ней нет изображений. Ее бестолку в гитигнор помещать. Я ее деплою на продакшн, старая версия сайта с продакшна "удаляется", копируется версия с bitbucket. Как тут гитигнор поможет, если папки полностью меняются? А нужно как-то не трогать изображения со старого сайта