При создании миграций на бекенд не вносятся изменения в базу данных Posgresql
У меня есть 2 приложения backend и db, которые находятся каждый в своём контейнере. Backend на Django, db на postgresql. При первичной сборке контейнеров и создании миграций, данные попадают в volume postgres_data/ в корневой папке сервера. При пересборке контейнера всё работает хорошо.
К примеру, я могу удалить все контейнеры, запустить их и снова база данных сохранится.
Но.
Если я вношу изменения со стороны бекенда, которые потребуют внесения миграций, то в db они не отобразятся. Я создаю test_fields в какой-либо модели Django, пушу на сервер изменения. В контейнере backend эти изменения отображаются, а вот в db новая колонка в таблице не появляется. docker-compose.yml
version: '3.3'
services:
db:
image: postgres:13.0-alpine
ports:
- 5432:5432
volumes:
- ./postgres_data:/var/lib/postgresql/data/:rw
restart: always
environment:
HOST: 'db'
PORT: 5432
PGDATA: /var/lib/postgresql/data/
env_file:
- ./.1env
networks:
- nginx_net
backend:
image: hinek/astsmarttime:main
restart: always
ports:
- "8000:8000"
volumes:
- ./resources:/app/resources/
env_file:
- ./.1env
networks:
- nginx_net
volumes:
postgres_data:
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': env.str('POSTGRES_DB', 'POSTGRES_DB'),
'USER': env.str('POSTGRES_USER', 'POSTGRES_USER'),
'PASSWORD': env.str('POSTGRES_PASSWORD', 'POSTGRES_PASSWORD'),
'HOST': env.str('HOST', 'HOST'),
'PORT': env.int('PORT', 'PORT'),
}
}
Помогает увидеть изменение только очистка папки postgres_data/, которая лежит на сервере и новое созданий миграций. Но тогда удаляется и вся база данных, что немного неудобно.