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

WindowsDockermongoコンテナーはボリュームマウントでは機能しません

    これを回避するには、rsyncなどのツールを使用できます。 Mongoの実行中にdbファイルをマップされたディレクトリに移動します。根本的なバグは、Windowsでマップされたボリュームとコンテナー内のバインドパスの間の遅延に関係しています。作業をrsyncにオフロードすると、レイテンシーがMongoのランタイム要件から切り離されます。

    基本的なDockerfileを作成します このように:

    FROM mongo:latest
    
    RUN apt-get update && \ 
        apt-get install -y \
            rsync
    
    ADD init.sh /init.sh
    

    init.shの場所 は:

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

    次に、コンテナを起動するときに、./init.shで開始します。 ENTRYPOINTとして 。




    1. AmazonAWSでの安全なMongoDBデプロイメント

    2. PHPドライバーを使用して過去の日付からMongoDBObjectIDを作成します

    3. MongoDB-複数の行を集約

    4. アグリゲーション使用時のMongoエラー:ソートがメモリ制限を超えました