MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Il contenitore mongo di Windows Docker non funziona con il montaggio del volume

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 .