Обновление образа в Docker
Обновление образа берёт тот же тег postgres:18, том остаётся, тег latest не используют.
Меняется слой программы,
а каталог данных
на /var/lib/postgresql
остаётся подключённым
как прежде.
Тег latest
не подставляют вместо
postgres:18:
номер версии не должен
прыгать неожиданно.
Перенос тома
на следующую мажорную версию
образа здесь не разбирают -
работают с тем же тегом
и тем же dbdata.
Сервис db
с паролем demo,
базой app
и томом dbdata
выглядит так:
services:
db:
image: postgres:18
environment:
POSTGRES_PASSWORD: demo
POSTGRES_DB: app
volumes:
- dbdata:/var/lib/postgresql
volumes:
dbdata:
После первого подъёма
создают таблицу notes
и проверяют, что она на месте:
docker compose up -d
docker compose exec db psql -U postgres -d app -c "CREATE TABLE notes (id INT PRIMARY KEY)"
docker compose exec db psql -U postgres -d app -c "SELECT tablename FROM pg_tables WHERE tablename = 'notes'"
Сначала подтягивают образ
командой docker compose pull,
затем снова поднимают проект
в фоне через
docker compose up
с флагом -d.
Том dbdata
не удаляют:
docker compose pull
docker compose up -d
После подъёма таблица
notes
в базе app
на месте -
файлы в томе пережили
обновление слоя образа.
Создайте таблицу pins в сервисе store на томе rev, подтяните образ postgres:18 и снова поднимите проект без удаления тома.
Убедитесь, что pins видна в базе app сервиса store после второго подъёма.