MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Le conteneur mongo Windows Docker ne fonctionne pas avec le montage de volume

Pour contourner ce problème, vous pouvez utiliser un outil comme rsync pour déplacer les fichiers db dans le répertoire mappé pendant que Mongo est en cours d'exécution. Le bogue sous-jacent est lié à la latence entre le volume mappé Windows et ce chemin de liaison dans le conteneur. Le déchargement du travail sur rsync dissocie la latence des exigences d'exécution de Mongo.

Exemple

Créer un Dockerfile de base comme ceci :

FROM mongo:latest

RUN apt-get update && \ 
    apt-get install -y \
        rsync

ADD init.sh /init.sh

init.sh est :

#!/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 $!

Ensuite, lors du lancement du conteneur, commencez simplement par ./init.sh comme ENTRYPOINT .