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