sql >> データベース >  >> NoSQL >> MongoDB

デフォルトのコレクションとデータを使用してMongoDockerイメージを作成するにはどうすればよいですか?

    問題は、情報を/db/dataに保存できないことでした。 、だから私は自分のデータディレクトリを作成するソリューションを作成しました。

    # 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"]
    

    docker-library / mongo Githubプロジェクトの@yosifkitに、ボリュームが結果のイメージにデータを保存することを指摘してくれたことに感謝します。ドキュメントでそれを見逃しました。



    1. MongoDB$ltアグリゲーションパイプラインオペレーター

    2. レスクワーカーがいつ仕事を終えたかを知る

    3. CDPでNiFi、Kafka、HBaseを使用してスケーラブルなプロセスを構築する

    4. SQLデータベースの代わりに/Redisなどのキー/値ストアを使用する場合