Um dies zu umgehen, können Sie ein Tool wie rsync
verwenden um die db-Dateien in das zugeordnete Verzeichnis zu verschieben, während Mongo ausgeführt wird. Der zugrunde liegende Fehler hat mit der Latenz zwischen dem von Windows zugeordneten Volume und diesem Bindungspfad innerhalb des Containers zu tun. Das Auslagern der Arbeit auf rsync entkoppelt die Latenz von den Laufzeitanforderungen von Mongo.
Beispiel
Erstellen Sie ein einfaches Dockerfile
so:
FROM mongo:latest
RUN apt-get update && \
apt-get install -y \
rsync
ADD init.sh /init.sh
Wobei init.sh
ist:
#!/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 $!
Beginnen Sie dann beim Starten des Containers einfach mit ./init.sh
als Ihren ENTRYPOINT
.