この完全なDocker Compose の例では、永続データを使用してローカルの MongoDB Atlasクラスターを設定します。完全なDocker Composeファイルと各コンポーネントを確認して、その目的と構成を理解します。詳しくは、「 Dockerを使用してローカル Atlas 配置を作成する 」を参照してください。
Docker構成ファイル
次の例では、mongodb/mongodb-atlas-local
イメージを使用してローカル Atlas クラスターを作成します。このファイルはネットワークを構成し、データベースのシードとデータの永続化のための正しいデータ ボリュームと Atlas Search インデックスをマウントします。
1 services: 2 mongodb: 3 image: mongodb/mongodb-atlas-local 4 hostname: mongodb 5 environment: 6 - MONGODB_INITDB_ROOT_USERNAME=user 7 - MONGODB_INITDB_ROOT_PASSWORD=pass 8 ports: 9 - 27017:27017 10 volumes: 11 - ./init:/docker-entrypoint-initdb.d 12 - db:/data/db 13 - configdb:/data/configdb 14 - mongot:/data/mongot 15 volumes: 16 db: 17 configdb: 18 mongot:
次の情報を使用して、ローカル Atlas クラスターに独自のデータをプロビジョニングし、構成とデータを永続化します。
ファイル構造
Dockerコンフィギュレーションファイルには、次の主要なパラメーターがあります。
services
は、実行するコンテナを定義します。この例では 、mongodb
という名前の単一のサービスがMongoDBサービスを定義しています。完全なアプリケーションを実行するために必要な他のサービスがある場合があります。volumes
は、コンテナ間で共有できる永続的なストレージの場所を定義します。この例では、 MongoDBサービスの動作に必要な永続的なストレージの場所を示しています。
サービス構成
イメージ
image: mongodb/mongodb-atlas-local
必須
このパラメーターは、ローカルMongoDB Atlasイメージを定義します。この定義は最新バージョンのイメージを使用するため、 タグを使用するのと同じになります。組織で特定のイメージ:latest
ビルドを使用する必要がある場合は、 を追加できます。最新の@sha256:<digest>
OS 更新を持つ特定のバージョンのMongoDBを使用する場合は、バージョン番号タグを使用します。例、mongodb/mongodb-atlas-local:8.0.6
Hostname
hostname: mongodb
必須
このパラメーターは、コンテナのホスト名を定義します。ローカルレプリカセットが機能するためには、これを正しく指定する必要があります。このパラメーターは、同じDockerコンテナ ネットワーク内の異なるサービス間での通信を確保するために必要です。このコンテナは同じホスト名 mongodb
で参照できます。
環境を設定する
認証
environment: - MONGODB_INITDB_ROOT_USERNAME=user - MONGODB_INITDB_ROOT_PASSWORD=pass
推奨
強調表示された environment
パラメータは、ローカル Atlas クラスターの初期ルートユーザー名とパスワードを設定します。わかりやすくするために、この例では 、認証情報はDocker Composeファイル自体で定義されていますが、認証情報を環境変数に抽象化できます。
ログ記録
environment: - MONGODB_INITDB_ROOT_USERNAME=user - MONGODB_INITDB_ROOT_PASSWORD=pass - MONGOT_LOG_FILE=/dev/stderr - RUNNER_LOG_FILE=/dev/stderr
任意
強調表示された environment
パラメータは、問題の診断に役立つログを定義します。 Atlas Search 機能を提供する mongot
は MONGOT_LOG_FILE
を生成します。この例では、mongot
のログを stderr
ディレクトリに出力します。ドライバー サービスは RUNNER_LOG_FILE
を生成します。ドライバー サービスは、mongod
を作成し、mongot
との統合を構成するプロセスをモニターします。この例では、ドライバー ログを stderr
ディレクトリに出力します。
ボリューム
ボリュームは、コンテナの再起動後もデータと構成を保持します。
初期化
volumes: - ./init:/docker-entrypoint-initdb.d
条件付き
強調表示された volumes
パラメーターは、ローカル init
ディレクトリをコンテナの 初期化ディレクトリにマウントします。通常、init
ディレクトリはプロジェクトに配置されます。docker-compose up
を実行すると、 プロセスはこのディレクトリ内の初期化スクリプトを検索します。サポートされているファイルの種類は次のとおりです。
.js
MongoDB シェルスクリプト.sh
Bash スクリプト
例、次のスクリプトをinit
フォルダーに配置すると、次のようになります。
スクリプトは、サンプルデータセットの例を検索します。
ダウンロードしたデータセットを確認します。
mongorestore
ローカルMongoDB Atlasコンテナイメージが提供する を使用して、アーカイブを新しいローカル Atlas クラスターに復元します。ロードされたデータを確認します。
init/init.sh !/bin/bash curl -O https://atlas-education.s3.amazonaws.com/sampledata.archive echo "Sample data downloaded." mongorestore --uri "$CONNECTION_STRING" --archive=./sampledata.archive echo "Sample data loaded successfully."
注意
接続文字列
シード処理中に接続文字列をビルドする際に接続文字列をビルドする際に接続文字列をビルドする際に接続文字列をビルドする際にクエリを実行する際に接続文字列をビルドする際に接続文字列をビルドするのが困難になる場合があるため、特にローカルマシンとDockerネットワークを切り替えると、$CONNECTION_STRING
環境変数がシード処理中に自動的に提供されます。
データ
volumes: - ./init:/docker-entrypoint-initdb.d - db:/data/db - configdb:/data/configdb - mongot:/data/mongot volumes: db: configdb: mongot:
条件付き
MongoDB はデフォルトで /data/db
ディレクトリにデータを保存します。このDocker構成ファイルでは、/data/db
ディレクトリがMongoDBサービスの db
ボリュームにマッピングされます。 Dockerコンフィギュレーションファイルの末尾にある volumes
パラメータは、mongodb サービスにマッピングされた db
ボリュームを含む、他のサービスが使用できるボリュームを宣言します。 db
ボリュームはコンテナの外部のストレージロケーションとして機能し、コンテナの再起動後もデータを保持します。
構成
volumes: - ./init:/docker-entrypoint-initdb.d - db:/data/db - configdb:/data/configdb - mongot:/data/mongot volumes: db: configdb: mongot:
条件付き
デフォルトでは 、 MongoDB は/data/configdb
ディレクトリに構成データを保存します。ここは保存されたデータと同じ方法で保持されます。
Atlas Search(mongot
)
volumes: - ./init:/docker-entrypoint-initdb.d - db:/data/db - configdb:/data/configdb - mongot:/data/mongot volumes: db: configdb: mongot:
条件付き
ローカルMongoDB Atlasイメージ(mongodb/mongodb-atlas-local
mongot
)には、Atlas Search と Atlas ベクトル検索機能を提供する が付属しています。デフォルトではmongot
、 は/data/mongot
ディレクトリにインデックスを保存します。このボリュームはマッピングおよびマウントされ、そのデータは構成および保存されたデータと同様に実行全体で保持されます。
プロセスが正常であることを確認します
Atlasmongod
mongot)
のローカル実装により、 MongoDBプロセス( )と検索機能( )の構成が簡素化されます。初期化中にこれらのプロセスを開始し、再起動する必要があります。場合によっては、コンテナがを実行中いるものの、必要なプロセスが準備ができていない場合があります。 。ローカルMongoDB Atlasイメージは、ヘルスチェックも提供します。
ヘルスチェックを使用して、 MongoDB、 、および Search 機能プロセスと初期化スクリプトが完全に準備されていることを確認できます。
スクリプトには、次のコードを含めます。
timeout 120 bash -c 'until [ "$(docker inspect --format='\''{{.State.Health.Status}}'\''<container-name>)" = "healthy" ]; do sleep 2; done'
Docker Compose を使用する場合は、ヘルスチェックを行うこともできます。
Docker Composer の使用
サービスを開始するには、次のコマンドを実行します。
docker-compose up
-d
を追加すると、 分離モードでサービスを実行できます。
サービスを停止するには、次のコマンドを実行します。
docker-compose down
-v
を追加すると、ボリュームを削除し、データをクリアできます。データや構成の変更を保持したくない場合、または 新しいコンテナから確実に再起動する 場合は、このオプションを使用します。
docker-compose up
の実行時にサービスが正常かどうかを確認するには、condition: service_healthy
パラメータを追加します。
api: depends_on: atlas_local: condition: service_healthy
詳細については、 「 Dockerを使用したローカル Atlas 配置の作成 」を参照してください。
フィードバック
ローカル Atlas クラスターについて詳しくは、 MongoDB Developer Community のフォーラム をご覧ください。ヘルプを受けるには、フィードバックを提供し、または機能をリクエストには、 MongoDBフィードバック エンジン を参照してください。