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

dockerizedmongoでデータを初期化します

    より自己完結型のアプローチ:

    • データベースを初期化するJavaScriptファイルを作成する
    • これらのファイルを含む派生MongoDBDockerイメージを作成します

    使い捨て容器を使用したり、ボリュームを作成してそれらをリンクしたりする答えはたくさんありますが、これは非常に複雑に思えます。 mongo dockerイメージのdocker-entrypoint.shを見ると、206行目で/docker-entrypoint-initdb.d/*.jsが実行されていることがわかります。 構文を使用した初期化時のファイル:mongo <db> <js-file> 。シードデータを含む派生MongoDBDockerイメージを作成する場合は、次のことができます。

    • シードデータを使用してmongoを立ち上げる単一のdockerrunコマンドがあります
    • コンテナの停止と開始を通じてデータが保持される
    • docker stop、rm、およびrunコマンドを使用してそのデータをリセットします
    • k8s、mesos、swarm、rancherなどのランタイムスケジューラを使用して簡単にデプロイできます

    このアプローチは、次の場合に特に適しています。

    • 表示に現実的なデータが必要なPOC
    • ブラックボックステストに一貫したデータを必要とするCI/CDパイプライン
    • 製品デモ(セールスエンジニア、製品所有者)の展開例

    方法:

    1. 初期化スクリプトを作成してテストします(必要に応じてデータをグルーミングします)
    2. initスクリプトをコピーする派生イメージのDockerfileを作成します

      FROM mongo:3.4
      COPY seed-data.js /docker-entrypoint-initdb.d/
      
    3. Dockerイメージを作成する

      docker build -t mongo-sample-data:3.4 .
      
    4. 必要に応じて、他のユーザーが使用できるように画像をDockerレジストリにプッシュします

    5. Dockerイメージを実行する

      docker run                               \
          --name mongo-sample-data             \
          -p 27017:27017                       \
          --restart=always                     \
          -e MONGO_INITDB_DATABASE=application \
          -d mongo-sample-data:3.4
      

    デフォルトでは、docker-entrypoint.shはスクリプトをtestに適用します db;上記の実行コマンドenvvarMONGO_INITDB_DATABASE=application これらのスクリプトをapplicationに適用します 代わりにdb。または、jsファイルで別のデータベースを作成して切り替えることもできます。

    これを実行するgithubリポジトリがあります-関連するファイルは次のとおりです。



    1. ブラウザを介してmongodbに接続しますか?

    2. 2つの異なるソート済みセットに従ってRedisをソートするにはどうすればよいですか?

    3. mongodbデータベースをエクスポート/ダンプするにはどうすればよいですか?

    4. ホットフィックスを制御する際のMongoエラー