För att komma runt detta kan du använda ett verktyg som rsync
för att flytta db-filerna till mappad katalog medan Mongo körs. Den underliggande buggen har att göra med latens mellan den mappade Windows-volymen och den bindningsvägen i behållaren. Att ladda ner arbetet till rsync frikopplar latensen från Mongos körtidskrav.
Exempel
Skapa en grundläggande Dockerfile
så här:
FROM mongo:latest
RUN apt-get update && \
apt-get install -y \
rsync
ADD init.sh /init.sh
Där init.sh
är:
#!/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 $!
Sedan, när du startar behållaren, börjar du bara med ./init.sh
som din ENTRYPOINT
.