Couchbase サービスの Docker 化

この例では Docker Compose を使い Couchbase サーバを起動し、 REST API を使えるように設定し、結果を確認します。

Couchbase はオープンソースです。そして、最近のウェブ、モバイル、IoT アプリケーション向けのドキュメント指向 NoSQL データベースです。簡単な開発とインターネットで性能をスケールできるように設計されています。

Couchbase サーバの起動

Couchbase Docker イメージは Docker Hub 上で公開されています。

Couchbase サーバは次のように起動します:

docker run -d --name db -p 8091-8093:8091-8093 -p 11210:11210 couchbase

各ポートを公開する理由は、 Couchbase Developer Portal - Network Configuration をご覧ください。

ログには次のように表示されます:

docker logs db
Starting Couchbase Server -- Web UI available at http://<ip>:8091

注釈

このページの例では、接続先の Docker ホストの IP アドレスは 192.168.99.100 を前提にしています。 192.168.88.100 は実際の Docker ホストの IP アドレスに置き換えてください。Docker Machine で Docker を実行している場合は、次のコマンドで IP アドレスを確認できます。

docker-machine ip <マシン名>

Couchbase コンソールには http://192.168.99.100:8091 でアクセスできます。デフォルトがユーザ名が Administrator 、パスワードが password です。

Couchbase Docker コンテナの設定

通常は Couchbase サーバを使う前にコンソール上での設定が必要です。これを REST API を使えば簡単に設定できます。

Data と Index サービスのメモリ設定

Couchbase インスタンス上では、Data ・ Query ・ Index は別々のサービスです。各サービスは別々の設定が必要です。例えば、Query は CPU の処理が集中するため、より速い CPU が必要です。 Index はディスクが重いため、速い SSD が必要です。Data は読み書きを速くするため、より多くのメモリが必要です。

メモリが必要になる設定は Data と Index サービスのみです。

curl -v -X POST http://192.168.99.100:8091/pools/default -d memoryQuota=300 -d indexMemoryQuota=300* Hostname was NOT found in DNS cache
* Trying 192.168.99.100...
* Connected to 192.168.99.100 (192.168.99.100) port 8091(#0)> POST /pools/default HTTP/1.1
> User-Agent: curl/7.37.1
> Host: 192.168.99.100:8091
> Accept: **
> Content-Length: 26> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 26 out of 26 bytes
< HTTP/1.1 200 OK
* Server Couchbase Server is not blacklisted
< Server: Couchbase Server
< Pragma: no-cache
< Date: Wed, 25 Nov 201522:49:51 GMT
< Content-Length: 0< Cache-Control: no-cache
<
* Connection #0 to host 192.168.99.100 left intact

これは REST エンドポイント /node/controller/setupServices に HTTP POST リクエストを送信した結果です。コマンドの結果は、Couchbase サーバ用に3つのサービスが設定されています。 Data サービスは kv 、Query サービスは n1ql 、Index サービスは index なのが分かります。

Couchbase サーバの認証情報をセットアップ

あとで Couchbase サーバを管理するため、ユーザ名とパスワードの認証情報を設定します。

curl -v -X POST http://192.168.99.100:8091/settings/web -d port=8091 -d username=Administrator -d password=password
* Hostname was NOT found in DNS cache
* Trying 192.168.99.100...
* Connected to 192.168.99.100 (192.168.99.100) port 8091(#0)> POST /settings/web HTTP/1.1
> User-Agent: curl/7.37.1
> Host: 192.168.99.100:8091
> Accept: **
> Content-Length: 17> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 17 out of 17 bytes
< HTTP/1.1 202 Accepted
* Server Couchbase Server is not blacklisted
< Server: Couchbase Server
< Pragma: no-cache
< Date: Wed, 25 Nov 201522:51:51 GMT
< Content-Type: application/json
< Content-Length: 2< Cache-Control: no-cache
<
* Connection #0 to host 192.168.99.100 left intact[]

これは REST エンドポイント /sampleBuckets/install に HTTP POST リクエストを送信した結果です。サンプル・バケット名をリクエスト中に指定します。

おつかれさまでした。Couchbase コンテナの設定を、全て REST API を使って行いました。

CBQ を使って Couchbase に問い合わせ

CBQ は Couchbase への問い合わせを省略するコマンドライン・ツールです。これは Couchbase サーバに対して JSON ドキュメントの作成・読み込み・更新・削除が可能です。ツールは Couchbase Docker イメージに同梱されています。

CBQ ツールの実行:

docker run -it --link db:db couchbase cbq --engine http://db:8093
Couchbase query shell connected to http://db:8093/ . Type Ctrl-D to exit.
cbq>

--engine パラメータは、 CBQ に Docker ホスト上で動いている Couchbase サーバのホストとポートを指定します。ホストとは、通常、Couchbase サーバを実行しているホストの名前もしくは IP アドレスです。今回の例では、コンテナを起動時に指定したコンテナ名 db とポート 8093 が全てのクエリを受け付けます。

Couchbase には N1QL を使う JSON ドキュメントで問い合わせます。N1QL は包括的な宣言型クエリ言語であり、JSON ドキュメントに SQL のような機能を持たせます。

N1QL クエリを使ってデータベースに問い合わせます:

cbq> select * from `travel-sample` limit 1;{"requestID": "97816771-3c25-4a1d-9ea8-eb6ad8a51919", "signature": {"*": "*"}, "results": [{"travel-sample": {"callsign": "MILE-AIR", "country": "United States", "iata": "Q5", "icao": "MLA", "id": 10, "name": "40-Mile Air", "type": "airline"}}], "status": "success", "metrics": {"elapsedTime": "60.872423ms", "executionTime": "60.792258ms", "resultCount": 1, "resultSize": 300}}

Couchbase ウェブ・コンソール

Couchbase ウェブ・コンソール は Couchbase インスタンスを管理できるコンソールです。次の URL で表示します。

http://192.168.99.100:8091/

この IP アドレスの部分は Docker Machine の IP アドレスか、ローカルで動かしている場合は localhost です。

参考

Quickstart Docker Engine
https://docs.docker.com/engine/quickstart/