Дамп структуры в Docker
Дамп структуры снимает только описание таблиц, без строк. Так переносят схему на другой стенд без копирования содержимого.
Сервис db
с паролем demo,
базой app
и томом dbdata
на postgres:18
описывают в compose.yaml:
services:
db:
image: postgres:18
environment:
POSTGRES_PASSWORD: demo
POSTGRES_DB: app
volumes:
- dbdata:/var/lib/postgresql
volumes:
dbdata:
После подъёма в app
есть таблица notes
со строкой данных:
docker compose up -d
docker compose exec db psql -U postgres -d app -c "CREATE TABLE notes (id INT PRIMARY KEY); INSERT INTO notes VALUES (1)"
У pg_dump
флаг --schema-only
отключает вывод данных.
Перенаправление на хост
пишет результат в shape.sql:
docker compose exec db pg_dump -U postgres --schema-only app > shape.sql
В shape.sql
есть команды для notes,
но нет блоков с данными:
строки из таблицы
в файл не уехали,
осталось только описание полей.
Заполните таблицу units в базе app сервиса store строкой и сохраните только схему этой базы в layout.sql на хосте.
Проверьте, что в layout.sql есть описание таблицы units, а записанная строка в файл не попала.