Как организовать процесс DevOps с контейнерами Django?
Хотел бы понять как организовать процесс сборки и тестирования перед публикацией в продакшн django.
В настоящий момент есть vds на котором крутится в docker postgressql и django в отдельных контейнерах. На самом деле контейнеров поболее (celery), но не суть важно.
Процесс обработки организован так - на машине разработчика происходит сборка docker с включенным флагом DEBUG, прогоняются тесты, затем git отправляет master ветку в удаленный репозиторий:
docker-compose -f local.yml build django
docker-compose -f local.yml up -d django
Затем захожу по ssh на vds, получаю мастер ветку из репозитория, собираю образ на vds (но уже с отключенным DEBUG и рядом настроек для продакшн) и происходит публикация:
docker-compose -f production.yml build django
docker-compose -f production.yml up -d django
все работает и собирается, но есть проблема - сборка у разработчика и сборка на боевой машине идет немного с разными настройками и библиотеками (я подчеркнул жирным разницу в командах сборки)... И бывает так, что после команды публикации сайт падает из-за какой то ошибки, которая не проявлялась у разработчика.
Как я вижу процесс. После отправки master ветки в git начинается сборка образа на каком нибудь сервере, который затем прогоняет ряд тестов - в частности доступность ряда ключевых страниц. На рабочем сервере сборка не используется, а получается готовый собранный образ из вышеупомянутого сервера сборки. Проблема еще в том, что на сервере сборки еще и postgressql с какими нибудь данными надо поднять - иначе джанга просто не запуститься.
Есть ли где нибудь описание этого процесса? Гуглил, но везде описана сборка django без базы sql. Есть ли открытые решения или условно бесплатные для одного проекта небольшого?
Леонид, просто подыми рядом постгресс, базу залей через pg_dump и пускай она остаётся запущенной. Рядом собирай и тестируй проект. Если разработчик меняет базу, то соответственно надо прогонять миграции и на билд-сервере и на продакшене. Постгрес можно подымать в контейнере, не забывая вынести данные в волюм.
Как я вижу процесс. После отправки master ветки в git начинается сборка образа на каком нибудь сервере, который затем прогоняет ряд тестов - в частности доступность ряда ключевых страниц.
статья на Гарантум интересная, спасибо (в моем проекте используются практически такие же стек и модули/ сервисы/ контейнеры), но было бы классно, если бы дополнить ее информацией о структуре папок (томов) на физическом диске, с привязкой/ фактическом размещении файлов Dockerfile и docker-compose.yml, папке размещения приложения, ее связи с репой gitea, да и настройкой папки data в той же gitea (тоже какой-то мутный момент), а то вот пытаюсь собрать по разным источникам, но как-то пока не очень получается :(
Заранее благодарен :)