Docs Menu
Docs Home
/ /
Atlas CLI
/ /

Docker構築の例

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

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

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コンフィギュレーションファイルには、次の主要なパラメーターがあります。

  • 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 シェルスクリプト

  • .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コンフィギュレーションファイルの末尾にある 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 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-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 を使用した配置

項目一覧