sql >> Database >  >> NoSQL >> MongoDB

Hoe maak je een Mongo Docker-afbeelding met standaardverzamelingen en -gegevens?

Het probleem was dat informatie niet kon worden opgeslagen op /db/data , dus ik heb een oplossing gemaakt om mijn eigen gegevensmap te maken.

# Parent Dockerfile https://github.com/docker-library/mongo/blob/982328582c74dd2f0a9c8c77b84006f291f974c3/3.0/Dockerfile
FROM mongo:latest

# Modify child mongo to use /data/db2 as dbpath (because /data/db wont persist the build)
RUN mkdir -p /data/db2 \
    && echo "dbpath = /data/db2" > /etc/mongodb.conf \
    && chown -R mongodb:mongodb /data/db2

COPY . /data/db2

RUN mongod --fork --logpath /var/log/mongodb.log --dbpath /data/db2 --smallfiles \
    && CREATE_FILES=/data/db2/scripts/*-create.js \
    && for f in $CREATE_FILES; do mongo 127.0.0.1:27017 $f; done \
    && INSERT_FILES=/data/db2/scripts/*-insert.js \
    && for f in $INSERT_FILES; do mongo 127.0.0.1:27017 $f; done \
    && mongod --dbpath /data/db2 --shutdown \
    && chown -R mongodb /data/db2

# Make the new dir a VOLUME to persists it 
VOLUME /data/db2

CMD ["mongod", "--config", "/etc/mongodb.conf", "--smallfiles"]

Met dank aan @yosifkit van het docker-library/mongo Github-project voor het erop wijzen dat het volume de gegevens in de resulterende afbeelding zou opslaan. Dat heb ik gemist in de documentatie.



  1. Geneste gegevens van MongoDB in een gegevensframe van Panda's krijgen

  2. Hoe vaak moet ik mijn Booksleeve-verbinding openen/sluiten?

  3. Wat betekent het om een ​​werkset in RAM voor MongoDB te passen?

  4. zmq vs redis voor pub-subpatroon