Docs Menu
Docs Home
/ /
ローカルとクラウドの配置

Docker Composeの例

この完全なDocker ComposeのMongoDB Atlasの例では、永続データを含むローカルMongoDB Atlasクラスターを設定します。完全なDocker Composeファイルと各コンポーネントを検討して、その目的と構成を理解します。詳しくは、Dockerを使用してローカル Atlas 配置を作成する。を参照してください。

次の例では、mongodb/mongodb-atlas-local イメージを使用してローカル Atlas クラスターを作成します。このファイルはネットワークを構成し、データベースのシードとデータの永続化のための正しいデータ ボリュームと Atlas 検索インデックスをマウントします。

1services:
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
15volumes:
16 db:
17 configdb:
18 mongot:

次の情報を使用して、ローカル Atlas クラスターに独自のデータをプロビジョニングし、構成とデータを永続化します。

Docker Composeファイルには、次の主要なパラメーターがあります。

  • 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: 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 機能を提供する mongotMONGOT_LOG_FILE を生成します。この例では、mongot のログを stderrディレクトリに出力します。ドライバー サービスは RUNNER_LOG_FILE を生成します。ドライバー サービスは、mongod を作成し、mongot との統合を構成するプロセスをモニターします。この例では、ドライバー ログを stderrディレクトリに出力します。

ボリュームは、コンテナの再起動後もデータと構成を保持します。

volumes:
- ./init:/docker-entrypoint-initdb.d

条件付き

強調表示された volumes パラメーターは、ローカル initディレクトリをコンテナの 初期化ディレクトリにマウントします。通常、initディレクトリはプロジェクトに配置されます。docker-compose up を実行すると、プロセスはこのディレクトリ内の初期化スクリプトを検索します。サポートされているファイルの種類は次のとおりです。

  • .js MongoDB shell スクリプト

  • .sh Bash スクリプト

例、次のスクリプトをinit フォルダーに配置すると、次のようになります。

  1. スクリプトは、サンプルデータセットの例を検索します。

  2. ダウンロードしたデータセットを確認します。

  3. mongorestore を使用し、ローカルのMongoDB Atlasコンテナイメージが提供する機能で、アーカイブを新しいローカル Atlas クラスターに復元します。

  4. ロードされたデータを確認します。

# 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 Composeファイルの末尾にある 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ディレクトリに構成データを保存します。ここは保存されたデータと同じ方法で保持されます。

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)には、Atlas Search と Atlas Vector Search 機能を提供する mongot が付属しています。デフォルトでは、mongot/data/mongotディレクトリにインデックスを保存します。このボリュームはマッピングおよびマウントされ、そのデータは構成および保存されたデータと同様に実行の間で保持されます。

Atlas のローカル実装により、MongoDBプロセス(mongod)と検索する機能(mongot))の構成が簡素化されます。初期化中に、これらのプロセスを開始して再起動する必要があります。場合によっては、コンテナはを実行中ているものの、必要なプロセスが準備ができていない場合があります。MongoDB Atlas のローカル イメージもヘルスチェックを提供します。

ヘルスチェックを使用して、MongoDB、および検索する機能プロセス、ならびに初期化スクリプトが完全に準備されていることを確認できます。

スクリプトには、次のコードを含めます。

timeout 120 bash -c 'until [ "$(docker inspect --format='\''{{.State.Health.Status}}'\''<container-name>)" = "healthy" ]; do sleep 2; done'

Docker Compose を使用する場合は、ヘルスチェックを行うこともできます。

サービスを開始するには、次のコマンドを実行します。

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フィードバックエンジンを参照してください。

戻る

Docker を使用した配置

項目一覧