За да избегнете това, можете да използвате инструмент като rsync
за да преместите db файловете в картографирана директория, докато Mongo работи. Основният бъг е свързан със закъснението между картирания обем на Windows и този път на свързване в контейнера. Прехвърлянето на работата към rsync отделя латентността от изискванията за време на изпълнение на Mongo.
Пример
Създайте основен Dockerfile
като това:
FROM mongo:latest
RUN apt-get update && \
apt-get install -y \
rsync
ADD init.sh /init.sh
Където init.sh
е:
#!/bin/bash
migrate_db() {
while true
do
rsync -avh /data/db/* /data/mapped-db
sleep 5
done
}
migrate_db &
#Execute a command
mongod --smallfiles --logpath=/dev/null --verbose &
#Wait
wait $!
След това, когато стартирате контейнера, просто започнете с ./init.sh
като ваша ENTRYPOINT
.