Om dit te omzeilen, kun je een tool gebruiken zoals rsync
om de db-bestanden naar de toegewezen map te verplaatsen terwijl Mongo actief is. De onderliggende bug heeft te maken met latentie tussen het door Windows toegewezen volume en dat bindpad binnen de container. Door het werk naar rsync te verplaatsen, wordt de latentie losgekoppeld van de runtime-vereisten van Mongo.
Voorbeeld
Maak een basis Dockerfile
zoals dit:
FROM mongo:latest
RUN apt-get update && \
apt-get install -y \
rsync
ADD init.sh /init.sh
Waar init.sh
is:
#!/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 $!
Begin vervolgens bij het starten van de container met ./init.sh
als uw ENTRYPOINT
.