Задать вопрос
@stilet69
программист

Как организовать процесс 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. Есть ли открытые решения или условно бесплатные для одного проекта небольшого?
  • Вопрос задан
  • 265 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 4
@bankinobi
а просто запустить базу с данными на билд-сервере или если большая продакшен-база, то урезать.
Или я не понял суть проблемы.
Ответ написан
inf
@inf
DevOps Engineer
Как я вижу процесс. После отправки master ветки в git начинается сборка образа на каком нибудь сервере, который затем прогоняет ряд тестов - в частности доступность ряда ключевых страниц.

Описание укладывается в базовые настройки gitlab ci для python/django.
Ответ написан
Комментировать
@stilet69 Автор вопроса
программист
В общем написал подробную статью о том как это сделать - https://garantum.ru/article/avtomatizaciya-predpri...
Ответ написан
Комментировать
@Winny63
статья на Гарантум интересная, спасибо (в моем проекте используются практически такие же стек и модули/ сервисы/ контейнеры), но было бы классно, если бы дополнить ее информацией о структуре папок (томов) на физическом диске, с привязкой/ фактическом размещении файлов Dockerfile и docker-compose.yml, папке размещения приложения, ее связи с репой gitea, да и настройкой папки data в той же gitea (тоже какой-то мутный момент), а то вот пытаюсь собрать по разным источникам, но как-то пока не очень получается :(
Заранее благодарен :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы