Сохранность данных в Docker
Сохранность данных проверяют так: контейнер удаляют, а том с файлами базы оставляют. Файл описания и образ на диске при этом не стираются: меняется только запись о работающей копии.
Сервис db с томом
dbdata и паролем
demo описывают так:
services:
db:
image: mysql:9.7
environment:
MYSQL_ROOT_PASSWORD: demo
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
После фонового подъёма
в базе появляют таблицу
notes:
docker compose up -d
Команда создания таблицы внутри сервиса:
docker compose exec db mysql -uroot -pdemo -e "CREATE TABLE notes (id INT PRIMARY KEY)"
Контейнеры проекта убирают без флага удаления томов:
docker compose down
Новый фоновый подъём
с тем же файлом снова
подключит dbdata.
Список таблиц покажет
notes:
docker compose up -d
Проверка имени таблицы внутри сервиса:
docker compose exec db mysql -uroot -pdemo -e "SHOW TABLES"
Создайте таблицу marks в томе keep, уберите контейнеры без удаления тома и поднимите проект снова.
Убедитесь, что таблица marks видна после второго подъёма.