MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Der Mongo-Container von Windows Docker funktioniert nicht mit Volumemount

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 .