Пропала база данных после перезапуска. Что случилось и как не повторить
Классика первой недели: подняли MySQL в контейнере, наполнили данными, пересоздали контейнер — всё исчезло.
Причина: контейнер хранит свои изменения в тонком слое поверх образа. Удалили контейнер — удалили слой. Это не баг, это дизайн: контейнеры задуманы одноразовыми.
Решение — volumes, тома. Это папка снаружи контейнера, которая монтируется внутрь.
Два способа:
-v mydata:/var/lib/mysql — именованный том. Docker сам решает, где хранить на диске. Удобно, переживает пересоздание контейнера.
-v ./data:/var/lib/mysql — привязка к папке проекта. Видите файлы прямо в своей директории, легко бэкапить.
Куда монтировать — смотрите в описании образа на Docker Hub, там всегда указан путь к данным. Для MySQL это /var/lib/mysql, для PostgreSQL — /var/lib/postgresql/data, для WordPress — /var/www/html.
Правило: любой контейнер с данными запускается только с томом. Без исключений.
—
Чтобы быть в курсе рынка — подпишись на @merch_kontory
Docker для Маркетера
@docker_marketers
Пропала база данных после перезапуска. Что случилось и как не повторить
Этот пост опубликован в Telegram-канале Docker для Маркетера. Подписаться можно по ссылке: @docker_marketers.