Per aggirare questo problema, puoi utilizzare uno strumento come rsync
per spostare i file db nella directory mappata mentre Mongo è in esecuzione. Il bug sottostante ha a che fare con la latenza tra il volume mappato di Windows e quel percorso di collegamento all'interno del contenitore. Scaricare il lavoro su rsync disaccoppia la latenza dai requisiti di runtime di Mongo.
Esempio
Crea un Dockerfile
di base così:
FROM mongo:latest
RUN apt-get update && \
apt-get install -y \
rsync
ADD init.sh /init.sh
Dove 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 $!
Quindi, quando avvii il contenitore, inizia con ./init.sh
come tuo ENTRYPOINT
.