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
.