2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Couchbaseローカル環境をDockerで構築

Posted at

概要

Couchbaseのローカル環境をDockerで構築した時のメモ

背景

Vagrantのローカル環境があったが、

  • 起動、ビルドが重い
  • コードがない(ブラックボックス化してる)
  • Vagrantわかる人がチームにいない(退社した人が作った環境の為)
    などの問題がある。

目的

ローカル環境をDockerでリプレイスする。

作業ログ

couchbaseイメージを動かしてみる。

まず、細かい設定とかは抜きにして、Couchbaseのコンテナを立ち上げてみる。

→本番環境のバージョンが、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

↓起動OK
スクリーンショット 2020-09-20 13.57.20.png

  • コンソール動作確認

ブラウザでhttp://0.0.0.0:8091/にアクセスし、Couchbaseのコンソールが表示されることを確認。
0_0_0_0_8091_ui_index_html__.jpg
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無くしてわからん。。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?