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
.