РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗dcPhMyDt 25 of 30 menu
◀ ▶

Данные MySQL в Docker

Данные MySQL лежат в томе, и новый контейнер сервера их не стирает. Каталог /var/lib/mysql монтируют в именованное хранилище dbdata, объявленное в корне описания. Удаление только контейнера оставляет файлы таблиц на месте.

Сервис db на mysql:9.7 с паролем root demo и томом dbdata. Сайт на nginx и FPM здесь не меняем - важен только сервер данных:

services: db: image: mysql:9.7 environment: MYSQL_ROOT_PASSWORD: demo volumes: - dbdata:/var/lib/mysql volumes: dbdata:

После фонового подъёма создадим учебную таблицу командой клиента внутри уже запущенной копии:

docker compose up -d 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 ('keep');"

Остановим проект без удаления томов, снова поднимем сервис и спросим строку из таблицы:

docker compose down docker compose up -d docker compose exec db mysql -uroot -pdemo -e "SELECT body FROM notes LIMIT 1;"

В ответе клиента остаётся слово keep - данные пережили новый контейнер сервера, потому что лежат в dbdata, а не в слое копии.

Подключите том mysqlfiles к /var/lib/mysql для db и сохраните в таблице marks одну строку stay.

После остановки проекта без снятия тома и повторного подъёма убедитесь, что эта строка на месте.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить