sql >> Base de Datos >  >> NoSQL >> MongoDB

El contenedor mongo de Windows Docker no funciona con el montaje de volumen

Para evitar esto, puede emplear una herramienta como rsync para mover los archivos db al directorio asignado mientras Mongo se está ejecutando. El error subyacente tiene que ver con la latencia entre el volumen asignado de Windows y esa ruta de enlace dentro del contenedor. La descarga del trabajo a rsync desacopla la latencia de los requisitos de tiempo de ejecución de Mongo.

Ejemplo

Crear un Dockerfile básico así:

FROM mongo:latest

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

ADD init.sh /init.sh

Donde init.sh es:

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

Luego, cuando inicie el contenedor, simplemente comience con ./init.sh como su ENTRYPOINT .