Я намагаюся розповсюдити набір підключених програм, що працюють у декількох пов'язаних контейнерах, що включає базу даних mongo, яка потрібна для:
- бути розподіленим, що містить деякі дані про насіння;
- дозволити користувачам додавати додаткові дані.
В ідеалі дані також зберігатимуться у зв’язаному контейнері обсягу даних.
Я можу отримати дані в mongo
контейнер, використовуючи mongo
базовий екземпляр, який не монтує жодних томів (образ dockerhub: psychemedia/mongo_nomount
- це, по суті, базовий файл mongo Dockerfile без VOLUME /data/db
оператора) та Dockerfile
конфігурацію за рядками:
ADD . /files
WORKDIR /files
RUN mkdir -p /data/db && mongod --fork --logpath=/tmp/mongodb.log && sleep 20 && \
mongoimport --db testdb --collection testcoll --type csv --headerline --file ./testdata.csv #&& mongod --shutdown
де ./testdata.csv
знаходиться в тому ж каталозі ( ./mongo-with-data
), що і файл Docker.
Мій файл конфігурації docker-compose містить наступне:
mongo:
#image: mongo
build: ./mongo-with-data
ports:
- "27017:27017"
#Ideally we should be able to mount this against a host directory
#volumes:
# - ./db/mongo/:/data/db
#volumes_from:
# - devmongodata
#devmongodata:
# command: echo created
# image: busybox
# volumes:
# - /data/db
Кожного разу, коли я намагаюся встановити VOLUME, здається, що оригінальні насіннєві дані - які зберігаються /data/db
- видаляються. Я думаю, коли підключений до /data/db
нього том замінює все, що є на даний момент.
Тим не менше, посібник користувача докера пропонує: Томи ініціалізуються при створенні контейнера. Якщо базове зображення контейнера містить дані в зазначеній точці монтування, чи наявні дані копіюються в новий том при ініціалізації тома ? Тож я очікував, що дані збережуться, якщо я розміщу команду VOLUME після команди висіву RUN
?
То що я роблю не так?
Довгий погляд полягає в тому, що я хочу автоматизувати збірку декількох пов'язаних контейнерів, а потім розповсюдити Vagrantfile
файл YAML / docker-compose, який запускатиме набір пов'язаних програм, що включає попередньо засіяну mongo
базу даних із (частково заповненою ) постійний контейнер даних.