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

Повторный старт тома в Docker

Повторный старт с тем же томом не выполняет новый скрипт, потому что каталог данных уже заполнен. Файлы из /docker-entrypoint-initdb.d образ выполняет только при первой инициализации пустого хранилища, а не при каждом новом контейнере.

Сначала в init/app.sql остаётся только таблица notes, а описание подключает том againdata и папку старта:

CREATE TABLE notes (id INT);

Файл compose.yaml с паролем demo выглядит так:

services: db: image: postgres:18 environment: POSTGRES_PASSWORD: demo volumes: - againdata:/var/lib/postgresql - ./init:/docker-entrypoint-initdb.d volumes: againdata:

Фоновый подъём создаёт таблицу notes из скрипта:

docker compose up -d

Затем в тот же SQL-файл добавляют вторую таблицу extra, хотя в томе уже лежит готовый кластер:

CREATE TABLE notes (id INT); CREATE TABLE extra (id INT);

Контейнеры проекта убирают командой docker compose down без удаления тома againdata:

docker compose down

Новый фоновый подъём с тем же файлом снова подключит заполненный том. Список таблиц содержит notes, а extra там нет:

docker compose up -d docker compose exec db psql -U postgres -c "\dt"

Добавьте в SQL-файл таблицу patch после первого подъёма на томе store и пересоздайте контейнер без стирания тома.

Запишите, что patch не появилась, а старая таблица осталась.

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