概要
Couchbaseのローカル環境をDockerで構築した時のメモ
背景
Vagrantのローカル環境があったが、
- 起動、ビルドが重い
- コードがない(ブラックボックス化してる)
- Vagrantわかる人がチームにいない(退社した人が作った環境の為)
などの問題がある。
目的
ローカル環境をDockerでリプレイスする。
作業ログ
couchbaseイメージを動かしてみる。
まず、細かい設定とかは抜きにして、Couchbaseのコンテナを立ち上げてみる。
-
Couchbaseのdockerhubリポジトリでイメージを確認
→本番環境のバージョンが、4.5.1
なので、community-4.5.1
を使う。
- コンテナを起動
とりあえずDescription
に書いてある通り起動
$ docker run -d --name db -p 8091-8094:8091-8094 -p 11210:11210 couchbase:community-4.5.1
- コンテナ起動確認
$ docker ps
- コンソール動作確認
ブラウザでhttp://0.0.0.0:8091/
にアクセスし、Couchbaseのコンソールが表示されることを確認。
Setup
を押下し、手動でアカウント、バケットの設定なども可能ですが、コード化が目的なのでここではスルーします。
とりあえず動作を確認。。
コード化
Dockerfile, docker-compose.yamlを作成
ローカル環境の設定を行うにあたり、以下の設定が必要になる。
- クラスタ作成
- サービス設定
- Couchbaseサーバーの認証情報設定
- バケット作成
- View設定
上記の設定をコードにおとすため、Dockerfile(ついでにdocker-compose.yamlも)を記載
# ディレクトリ構成
local-env
├ docker-compose.yaml
└ mbe-couchbase-container
├ byfield
│ └ all.ddoc # viewの定義ファイル
├ Dockerfile # CouchbaseのDockerファイル
└ configure.sh # Couchbaseの設定を行うbashスクリプト
# docker-compose.yaml
version: "3.7"
services:
mbe-couchbase:
build: ./mbe-couchbase-container
ports:
- 8091:8091
- 8092:8092
- 8093:8093
- 8094:8094
- 11210:11210
- 11211:11211
environment:
- COUCHBASE_ADMINISTRATOR_USERNAME=couchbase
- COUCHBASE_ADMINISTRATOR_PASSWORD=lcouchbase1
-
COUCHBASE_ADMINISTRATOR_USERNAME
,COUCHBASE_ADMINISTRATOR_PASSWORD
でCouchbaseの認証情報を設定 -
build: ./mbe-couchbase-container
で、↓Dockerfileを指定
#Dockerfile作成
FROM couchbase:community-4.5.1
# Couchbase初期化シェルをコンテナ内にコピー
COPY ./configure.sh /opt/couchbase
COPY ./byfield/ /opt/couchbase
# Couchbase設定実行シェル
CMD [ "/opt/couchbase/configure.sh" ]
# Couchbase設定シェル
set -m
# サーバ起動
/entrypoint.sh couchbase-server &
# APIサーバ起動までの待ち時間をざっくり設定 TODO:サーバ起動を検知して処理を進めるようにしたい。
sleep 30
# クラスタのメモリ割り当て
curl -v -X POST http://127.0.0.1:8091/pools/default -d memoryQuota=4096 -d indexMemoryQuota=4096
# サービス設定
curl -v http://127.0.0.1:8091/node/controller/setupServices -d services=kv%2cn1ql%2Cindex
# Couchbaseサーバーの認証情報設定
curl -v http://127.0.0.1:8091/settings/web -d port=8091 -d username=$COUCHBASE_ADMINISTRATOR_USERNAME -d password=$COUCHBASE_ADMINISTRATOR_PASSWORD
# バケット上限解除(バケットの上限数はデフォルトで10個,,それ以上作成する場合は以下設定で変更が必要)
curl -v -u $COUCHBASE_ADMINISTRATOR_USERNAME:$COUCHBASE_ADMINISTRATOR_PASSWORD -X POST http://127.0.0.1:8091/internalSettings -d maxBucketCount=20
# バケット作成
curl -v -u $COUCHBASE_ADMINISTRATOR_USERNAME:$COUCHBASE_ADMINISTRATOR_PASSWORD -X POST http://127.0.0.1:8091/pools/default/buckets -d name=bucket_name -d bucketType=couchbase -d ramQuotaMB=100 -d authType=sasl -d saslPassword=ladd_personal_info1
echo "please wait 30 sec..."
sleep 30
# View設定
curl -v -u $COUCHBASE_ADMINISTRATOR_USERNAME:$COUCHBASE_ADMINISTRATOR_PASSWORD -X PUT -H "Content-Type: application/json" http://127.0.0.1:8092/bucket_name/_design/api%2Ftest -d @/opt/couchbase/all.ddoc
sleep 15
# フォアグランド実行
fg 1
- docker-composeでコンテナ実行
$ docker-compose up -d mbe-couchbase
バケット起動を確認。
所感
Couchbaseは、ググってもあまり記事見つからない。
公式リファレンスはしっかりしてるし、簡単な実装だけだったので特に困らなかったけど。。Couchbaseって人気ない?
ちょっと前にクラウド版が出たらしいけど、クラウド移設する際は使わないと思う。
参考
※もう1つQittaの記事を参考にしたが、URL無くしてわからん。。