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

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

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

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

db = db.getSiblingDB('app'); db.notes.insertOne({ text: 'hello' });
services: db: image: mongo:8.3 volumes: - againdata:/data/db - ./init:/docker-entrypoint-initdb.d volumes: againdata:

Фоновый подъём создаёт документ hello из скрипта:

docker compose up -d

Затем в тот же JavaScript добавляют вторую вставку extra, хотя на диске уже лежит готовая база:

db = db.getSiblingDB('app'); db.notes.insertOne({ text: 'hello' }); db.notes.insertOne({ text: 'extra' });

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

docker compose down

Новый фоновый подъём с тем же файлом снова подключит заполненный том. В коллекции notes есть hello, а документа extra там нет - опишите это словами после короткого поиска:

docker compose up -d docker compose exec db mongosh --quiet app --eval "db.notes.find({ text: 'extra' }).toArray()"

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

Запишите, что patch не появился, а старый документ остался.

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