Данные MySQL в Docker
Данные MySQL лежат в томе,
и новый контейнер сервера
их не стирает.
Файлы базы пишутся
в хранилище dbdata,
а не только в слой
работающей копии.
Остановка проекта
без удаления тома
оставляет таблицы
на месте.
Сервис db
на mysql:9.7
с паролем root demo
монтирует том dbdata
в /var/lib/mysql:
services:
db:
image: mysql:9.7
environment:
MYSQL_ROOT_PASSWORD: demo
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
После фонового подъёма
создадим таблицу notes
через клиент
внутри сервиса:
docker compose up -d
Строка со словом hello:
docker compose exec db mysql -uroot -pdemo -e "CREATE TABLE notes (id INT PRIMARY KEY AUTO_INCREMENT, body VARCHAR(255)); INSERT INTO notes (body) VALUES ('hello');"
Контейнеры убирают без флага удаления томов:
docker compose down
Новый фоновый подъём
снова подключит dbdata.
Чтение первой строки
из notes
показывает текст hello:
docker compose up -d
Проверка внутри сервиса:
docker compose exec db mysql -uroot -pdemo -e "SELECT body FROM notes LIMIT 1;"
Подключите том ledger к /var/lib/mysql для сервиса db с паролем root demo и сохраните строку в таблице marks.
Уберите контейнеры без удаления тома, поднимите проект снова и убедитесь, что строка в marks на месте.