Chcete-li to obejít, můžete použít nástroj jako rsync
přesunout soubory db do mapovaného adresáře, když je Mongo spuštěno. Základní chyba souvisí s latencí mezi namapovaným svazkem Windows a cestou vazby v kontejneru. Přenesením práce na rsync se oddělí latence od požadavků Mongo na běhové prostředí.
Příklad
Vytvořte základní Dockerfile
takhle:
FROM mongo:latest
RUN apt-get update && \
apt-get install -y \
rsync
ADD init.sh /init.sh
Kde init.sh
je:
#!/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 $!
Poté při spouštění kontejneru začněte s ./init.sh
jako váš ENTRYPOINT
.