L o a d i n g
Как применять миграции на действующем проекте: Docker + GitLab CI/CD Сервер

В реальном проекте миграции — это неотъемлемая часть работы с базой данных. Но если проект уже развернут на сервере через Docker и CI/CD (например, GitLab), важно действовать аккуратно, чтобы не сломать всё. В этой статье расскажу, как безопасно применять миграции в таких условиях.

Шаг 1: Подготовка миграций локально

Создаём миграции: Локально, на вашей машине, выполните команду:

python manage.py makemigrations

Убедитесь, что миграции корректно сгенерировались и покрывают только те изменения, которые вы внесли.

Тестируем миграции: Примените их локально:

python manage.py migrate

Проверьте, что таблицы обновились как надо, и данные в порядке.

Заливаем в репозиторий: Добавьте файлы миграций в Git:

git add app_name/migrations/
git commit -m "Add migration for app_name"
git push

Шаг 2: Настройка автоматического применения миграций

В GitLab CI/CD автоматизация миграций — хорошая практика. Добавьте команду применения миграций в ваш .gitlab-ci.yml:

stages:
- deploy

deploy:
stage: deploy
script:
- docker-compose -f docker-compose.yml run web python manage.py migrate
only:
- main

Здесь:

  • docker-compose.yml — ваш Docker Compose файл.

  • web — название контейнера с приложением Django.

Эта команда выполнит миграции автоматически при деплое в main-ветку.

Шаг 3: Ручное применение миграций на сервере

Если автоматизация не настроена или вы хотите применить миграции вручную, выполните следующие шаги:

Подключитесь к серверу: Зайдите на сервер, где развёрнут проект:

ssh user@your-server-ip

Зайдите в контейнер Django: Найдите имя контейнера с Django:

docker ps

Затем подключитесь к нему:

docker exec -it your_django_container_name bash

Выполните миграции: Внутри контейнера выполните:

python manage.py migrate

Проверка: Убедитесь, что миграции применились корректно:

python manage.py showmigrations

Шаг 4: Рекомендации по безопасности

Резервные копии: Перед миграциями всегда делайте бэкап базы данных, особенно на продакшене. Например, для PostgreSQL:

pg_dump -U username -h localhost dbname > backup.sql

Миграции без даунтайма: Если изменения большие, используйте стратегии миграции без даунтайма (например, добавление новых колонок без удаления старых).

Мониторинг: После миграций убедитесь, что проект работает корректно, а логи не содержат ошибок.

Заключение

Применение миграций на действующем проекте в Docker и GitLab CI/CD — это вопрос дисциплины и автоматизации. Настройка правильного pipeline'а в GitLab избавит вас от необходимости делать всё вручную. А если приходится применять миграции вручную, помните о бэкапах и тестировании.

Держите миграции под контролем, и ваш проект будет развиваться без неожиданных сюрпризов! 🚀

Написать комментарий

Вы можете оставить комментарий автору статьи Обязательные поля помечены *