GCP サービスのエミュレータを Docker で起動する
GCP の Bigtable や Spanner などを利用するアプリケーションの開発をするとき、 エミュレータを利用すると課金がされないので便利。
エミュレータは Google Cloud SDK のコンポーネントとして提供されているが Docker イメージも提供されている。
エミュレータの Docker イメージは GCR に公開されていてドキュメント では GCR からプルしているが、 Docker Hub でも公開されている。
|
|
このエミュレータには Spanner, Bigtable, Datastore, Firestore, Pub/Sub のエミュレータが含まれている。 今回は Spanner と Bigtable を起動してみる。
Google Cloud SDK はインストール済みとする。
エミュレータ用の設定を作っておく。
|
|
認証を無効にする。
|
|
プロジェクトを設定する。
|
|
gcloud で Spanner エミュレータを操作できるように Spanner エミュレータのエンドポイントを設定する。 指定するエンドポイントは後ほど Docker で起動する REST 用のエンドポイント。
|
|
以降はこの設定が有効な状態で進める。
設定の切り替えは gcloud config configurations activate CONFIG_NAME
で行う。
デフォルトの設定に戻すときは gcloud config configurations activate default
とする。
Spanner エミュレータを起動する。
|
|
--host-port
はデフォルトでは localhost:9010
になっているが、コンテナ外からアクセスするために 0.0.0.0:9010
を指定する。
エミュレータにインスタンスを作成する際は --config
オプションに emulator-config
を指定する。
|
|
データベースの作成は通常通りできる。
|
|
エミュレータのエンドポイントを環境変数 SPANNER_EMULATOR_HOST
でエクスポートする。
|
|
環境変数 SPANNER_EMULATOR_HOST
をエクスポートしておくと Spanner のクライアントである
spanner-cli で接続できる。
|
|
Bigtable エミュレータもコンテナ外からアクセスするために --host-port 0.0.0.0:8086
を指定して起動する。
|
|
エミュレータのエンドポイントを環境変数 BIGTABLE_EMULATOR_HOST
でエクスポートする。
|
|
環境変数 BIGTABLE_EMULATOR_HOST
をエクスポートしておくと Bigtable のクライアントである
cbt で接続できる。
Bigtable エミュレータではインスタンスを作成する操作は不要で直接テーブルを作成できる。
|
|