Данные PostgreSQL в Docker
Данные базы лежат
в именованном томе
на /var/lib/postgresql
и переживают пересоздание
контейнера.
Файлы пишутся
в хранилище dbdata,
а не только в слой
работающей копии.
У этой версии каталог данных
лежит внутри тома,
в /var/lib/postgresql/18/docker.
Сервис db
на postgres:18
с паролем demo
монтирует том dbdata
в /var/lib/postgresql:
services:
db:
image: postgres:18
environment:
POSTGRES_PASSWORD: demo
volumes:
- dbdata:/var/lib/postgresql
volumes:
dbdata:
После фонового подъёма
создадим таблицу notes
через клиент
внутри сервиса:
docker compose up -d
Строка со словом hello:
docker compose exec db psql -U postgres -c "CREATE TABLE notes (id SERIAL PRIMARY KEY, body TEXT); INSERT INTO notes (body) VALUES ('hello');"
Контейнер сервера убирают без флага удаления томов:
docker compose rm -sf db
Новый фоновый подъём
снова подключит dbdata.
Чтение первой строки
из notes
показывает текст hello:
docker compose up -d
Проверка внутри сервиса:
docker compose exec db psql -U postgres -c "SELECT body FROM notes LIMIT 1;"
Подключите том ledger к /var/lib/postgresql для сервиса store с паролем demo и сохраните строку в таблице marks.
Пересоздайте контейнер сервера без удаления тома, поднимите проект снова и убедитесь, что строка в marks на месте.