MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

O contêiner mongo do Windows Docker não funciona com a montagem de volume


Para contornar isso, você pode empregar uma ferramenta como rsync para mover os arquivos db para o diretório mapeado enquanto o Mongo estiver em execução. O bug subjacente tem a ver com a latência entre o volume mapeado do Windows e esse caminho de ligação dentro do contêiner. Descarregar o trabalho para o rsync desacopla a latência dos requisitos de tempo de execução do Mongo.

Exemplo

Crie um Dockerfile básico assim:
FROM mongo:latest

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

ADD init.sh /init.sh

Onde 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 $!

Então, ao iniciar o contêiner, comece com ./init.sh como seu ENTRYPOINT .