Мы разрабатываем проект Django, используя Docker-контейнеры с несколькими ветками Git.
Проблема, с которой мы сталкиваемся, заключается в том, что при переключении ветвей автоматическая миграция применяется ко всем моделям при перезапуске контейнеров из-за конфигурации докера.Мы также не хотим применять миграцию вручную всегда к каждому изменению, поэтому мы включили команды миграции в конфигурацию докера.
Однако это вызывает некоторые проблемы, когда мы переключаемся с ветви функций, которая определенно опережает другую.Структура базы данных перевернута, и мы теряем данные.Есть ли какой-нибудь хороший способ сохранить структуру базы данных как можно более одинаковой (расширенный набор) и не иметь дело с миграциями вручную, когда мы переключаемся с ветви функций на устаревшую ветку?
Наша конфигурация докера следующая:
version: '3.3'
services:
postgres:
image: postgres:latest
restart: always
redis:
image: redis:latest
restart: always
web:
build: ./project
command: bash -c "python manage.py makemigrations && python manage.py migrate --noinput && gunicorn project.wsgi -b 0.0.0.0:8000 --workers 16"
volumes:
- ./project:/app
expose:
- "8000"
depends_on:
- postgres
- redis
restart: always
celery:
build: ./project
command: celery -A project worker -l info --concurrency=8 --max-tasks-per-child=1
volumes:
- ./project:/app
depends_on:
- postgres
- redis
restart: always