Происходит какая-то магия, условие для которой — пересобрать контейнер с приложением. Причём нужно чтобы в коде были изменения, иначе не прокатывает. В логе вижу вот это:
PostgreSQL Database directory appears to contain a database; Skipping initialization
2024-09-17 18:07:49.175 UTC [1] LOG: starting PostgreSQL 16.4 (Debian 16.4-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2024-09-17 18:07:49.175 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
2024-09-17 18:07:49.175 UTC [1] LOG: listening on IPv6 address "::", port 5432
2024-09-17 18:07:49.178 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-09-17 18:07:49.183 UTC [28] LOG: database system was interrupted; last known up at 2024-09-16 22:50:19 UTC
2024-09-17 18:07:49.258 UTC [28] LOG: database system was not properly shut down; automatic recovery in progress
2024-09-17 18:07:49.261 UTC [28] LOG: redo starts at 0/1D7BCB8
2024-09-17 18:07:49.261 UTC [28] LOG: invalid record length at 0/1D7BDA0: expected at least 24, got 0
2024-09-17 18:07:49.261 UTC [28] LOG: redo done at 0/1D7BD68 system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.00 s
2024-09-17 18:07:49.264 UTC [26] LOG: checkpoint starting: end-of-recovery immediate wait
2024-09-17 18:07:49.268 UTC [26] LOG: checkpoint complete: wrote 3 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.002 s, sync=0.001 s, total=0.006 s; sync files=2, longest=0.001 s, average=0.001 s; distance=0 kB, estimate=0 kB; lsn=0/1D7BDA0, redo lsn=0/1D7BDA0
2024-09-17 18:07:49.272 UTC [1] LOG: database system is ready to accept connections
И база становится девственно чиста. Собираю вот так:
sudo docker compose build
sudo docker compose up -d
хост:
Linux hostname 6.8.0-41-generic #41-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 2 20:41:06 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Пробовал снести все файлы — не помогло. Как они вообще могут пересекаться? Само приложение ничего странного не делает (вроде бы). Это VPS, поэтому железо протестировать не могу. Обновлял систему, перезагружал — всё работает и не ломается, даже база.
В логах приложения (на django) ничего интересного не вижу, все запросы проходят без ошибок, включая миграции. У моделей только CRUD, там просто нечему насиловать базу.