У Postgres есть место, куда он пишет журнал изменений: WAL.
Если база активно пишет данные, WAL может стать узким местом. В Docker его можно вынести в отдельный volume:
services:
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_INITDB_WALDIR: /var/lib/postgresql/wal
volumes:
- pg_data:/var/lib/postgresql/data
- pg_wal:/var/lib/postgresql/wal
volumes:
pg_data:
pg_wal:
Зачем это нужно:
1. данные базы лежат отдельно
2. журнал транзакций лежит отдельно
3. проще мониторить рост WAL
4. меньше риска забить основной volume логами
Особенно полезно для staging, pet-проектов с нагрузкой и локальных стендов, где внезапно «почему Postgres сожрал весь диск».
Мелочь, но уже уровень не “я просто поднял базу в Docker”, а нормальная инженерная привычка.



