Миграции Django с помощью Docker compose и томов

Я использую Django с Docker compose, и все постоянные файлы сохраняются в томе. Моя проблема заключается в том, что я также сохраняю свою базу данных в этом томе: как это влияет на миграции? Я добавил новую схему, и, похоже, нет способа отразить это изменение в БД. Когда я применяю миграции в локальной среде, все работает, миграции правильно применяются, и я вижу новую схему БД, но это потому, что я создал локальную папку app/static, которая отражает имя тома в docker-compose. Теперь, поскольку БД находится в этой папке, все работает, поскольку миграции применяются к БД. Когда я развертываю свое приложение, база данных внутри app/static остается старой базой данных, с теми же старыми записями и теми же старыми схемами. Как я могу применить миграции, чтобы база данных внутри тома app/static отражала новые изменения без потери старых записей? В качестве практического примера я добавил новую модель Action, которая не существует на сервере. Поэтому в БД есть все схемы, кроме Action. Локально я запускаю makemigrations и migrate, создаю файлы миграции (которые идут в Djangoapp/migrations) и обновляю БД (которая находится в app/static). Однако, после того, как я нажимаю на кнопку, я, очевидно, не вижу новой схемы в базе данных. Как это можно обойти? Я уже пробовал добавить в Dockerfile строки

RUN python3 manage.py makemigrations
RUN python3 manage.py migrate

без успеха, так как при миграции я получаю ошибку, что доступ к базе данных невозможен (что логично, так как том не существует, когда я собираю Dockerfile). Я также пробовал добавить точку входа, но это приводит к той же проблеме, что и выше. Даже удаление базы данных и миграций, а затем их повторное применение на стороне сервера не помогло. Я схожу с ума от этого и не могу найти решение нигде в Интернете. Ни одно из тех, что я пробовал, не сработало. Вот мой docker-compose.yml:

version: '2' сервисы: web0: build: . команда: python manage.py runserver 0.0.0.0:8000 порты: - "8000:8000" тома: - saved_data:/app/static

Профиль Dockerfile:

ENV PYTHONUNBUFFERED 1

RUN apt-get update && apt-get install -y --no-install-recommends build-essential r-base r-cran-randomforest python3.6 python3-pip python3-setuptools python3-dev wget libaio1
RUN apt-get install -y --no-install-recommends xmlsec1
WORKDIR .

COPY requirements.txt requirements_remote.txt

RUN pip3 install -r requirements_remote.txt

RUN Rscript -e "install.packages('data.table')"
RUN pip3 install matplotlib
RUN Rscript -e "install.packages('stargazer')"

RUN wget https://download.oracle.com/otn_software/linux/instantclient/217000/instantclient-basic-linux.x64-21.7.0.0.0dbru.zip
RUN mkdir "/opt/oracle"
RUN unzip instantclient-basic-linux.x64-21.7.0.0.0dbru.zip -d /opt/oracle
RUN sh -c "echo /opt/oracle/instantclient_21_4 > /etc/ld.so.conf.d/oracle-instantclient.conf"
RUN ldconfig

COPY . .
RUN chmod +x ./docker-entrypoint.sh
RUN chmod +rwx Djangoapp/migrations

EXPOSE 8000
ARG USER=myself
ARG UID=1001
ARG GID=1001
RUN groupadd -g $GID -o $USER
RUN useradd -m -u $UID -g $GID -o -s /bin/bash $USER
USER ${UID}:${GID}

CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]

А вот точка входа, которую я пытался использовать:

#!/bin/bash
# Collect static files
#echo "Collect static files"
#python3 manage.py collectstatic --noinput
set -e
echo "Preparing database migrations"
python3 manage.py makemigrations
echo "Applying database migrations 2"
python3 manage.py migrate --no-input
echo "Starting server."
python3 manage.py runserver 0.0.0.0:8000
Вернуться на верх