Как отбросить и восстановить контейнер postgres с помощью docker compose
Итак, у меня есть файл docker-compose, в котором есть 2 сервиса app и db
version: '3.9'
services:
app:
build:
context: .
command: >
sh -c "python manage.py wait_for_db &&
python manage.py makemigrations &&
python manage.py migrate &&
python manage.py collectstatic --noinput &&
python manage.py runserver 0.0.0.0:8000"
ports:
- 8000:8000
volumes:
- .:/app
- ./data/web:/vol/web
environment:
- SECRET_KEY=devsecretkey
- DEBUG=1
- DB_HOST=db
- DB_NAME=devdb
- DB_USER=devuser
- DB_PASS=changeme
depends_on:
- db
db:
image: postgres:13-alpine
environment:
- POSTGRES_DB=devdb
- POSTGRES_USER=devuser
- POSTGRES_PASSWORD=changeme
Я изменил модель Django, удалил старые файлы миграции (чего не следовало делать), а затем сделал 'manage.py migrate --fake zero', и теперь при миграции я получаю очевидную ошибку, что таблица уже существует в контейнере Postgres.
app_1 | File "/py/lib/python3.9/site-packages/django/db/backends/utils.py", line 99, in execute
app_1 | return super().execute(sql, params)
app_1 | File "/py/lib/python3.9/site-packages/django/db/backends/utils.py", line 67, in execute
app_1 | return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
app_1 | File "/py/lib/python3.9/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers
app_1 | return executor(sql, params, many, context)
app_1 | File "/py/lib/python3.9/site-packages/django/db/backends/utils.py", line 85, in _execute
app_1 | return self.cursor.execute(sql, params)
app_1 | File "/py/lib/python3.9/site-packages/django/db/utils.py", line 90, in __exit__
app_1 | raise dj_exc_value.with_traceback(traceback) from exc_value
app_1 | File "/py/lib/python3.9/site-packages/django/db/backends/utils.py", line 83, in _execute
app_1 | return self.cursor.execute(sql)
app_1 | django.db.utils.ProgrammingError: relation "search_genestorage" already exists
or from db
db_1 | 2022-04-03 01:29:49.231 UTC [31] ERROR: relation "search_genestorage" already exists
db_1 | 2022-04-03 01:29:49.231 UTC [31] STATEMENT: CREATE TABLE "search_genestorage" ("id" serial NOT NULL PRIMARY KEY, "chromosome" varchar(10) NOT NULL, "start_pos" integer NOT NULL, "end_pos" integer NOT NULL, "observed" text NOT NULL, "reference" text NULL, "zygosity" text NOT NULL, "refGene_function" text NULL, "refGene_gene" text NOT NULL, "quality" text NULL, "refGene_exonic_function" text NULL, "AC" text NULL, "AC_hom" text NULL, "aug_all" text NULL, "ExAC_ALL" text NULL, "gnomAD_exome_AF" text NULL, "Kaviar_AF" text NULL, "SIFT_pred_41a" text NULL, "SIFT4G_pred_41a" text NULL, "Polyphen2_HDIV_pred_41a" text NULL, "Polyphen2_HVAR_pred_41a" text NULL, "CADD_phred_41a" text NULL, "CLNSIG" text NULL, "filename" text NULL, "count_hom" integer NULL, "count_het" integer NULL, "count_total" integer NULL, "files_uploaded" integer NULL, "New_allele_frequency" double precision NULL)
Я хочу удалить только контейнер базы данных и начать со свежей пустой базы данных, чтобы применить миграции, Обратите внимание, что я не могу сделать docker-compose --build, так как служба приложений устанавливает много зависимостей и занимает много времени, а у меня очень плохой wifi. Есть ли способ удалить только контейнер базы данных?
docker-compose down удаляет изображения, как указано в комментариях