Docker Compose
を利用して、Elasticsearch
を3ノード1クラスタ構成で起動させたKibana
も立ち上げて、Elasticsearch
と連携させたDocker Compose
の設定値について、自分の理解した内容をまとめた
- Elasticsearch 6.3.1
- Kibana 6.3.1
- Docker Compose 1.22.0
.
├── docker-compose.yml
├── es
│ ├── Dockerfile
│ └── config
│ ├── elasticsearch.yml # 必要に応じて設定を追記する
│ └── log4j2.properties # 必要に応じて設定を追記する
└── kibana
└── Dockerfile
以下の手順でElasticsearch
とKibana
のコンテナを起動させる
## リポジトリをcloneして、docker-compose.ymlが配置されているディレクトリに移動
$ git clone [email protected]:sugikeitter/elasticsearch-kibana-docker.git
$ cd elasticsearch-kibana-docker
## docker-compose.ymlからDockerイメージをビルド
$ docker-compose build
## ビルドが成功したらコンテナ起動
$ docker-compose up
ブラウザでhttp://localhost:5601/
へアクセス
- この下にコンテナを定義していく
- ここで定義したservice名はコンテナ間で通信する時のホスト名のような役割になる
- 下で出てくる
container_name
と違い、Docker Compose
で利用される名称
- 下で出てくる
- 今回の場合だと
elasticsearch01
,elasticsearch02
,elasticsearch03
,kibana01
という4つ定義している
- 指定したディレクトリのDockerfileを利用してコンテナを起動させることができる
Elasticsearch
プロセス用のコンテナは3つあるが、今回は3つとも利用するDockerイメージは同じにしているため、全て./es
を指定する- つまり
./es/Dockerfile
からコンテナを起動する
- つまり
Kibana
プロセス用のコンテナは./kibana
を指定し、./kibana/Dockerfile
からコンテナを起動する
docker ps
した時に表示されるdockerコンテナの名前Docker Compose
ではなくDocker
側の機能で、同一ホストマシン上では同じ名前のコンテナは複数起動できないので注意
- 環境変数を追加することができる
- 今回は
ES_JAVA_OPTS
というElasticsearch
で利用されるJava起動引数を追加で設定したElasticsearch
としてはjvm.options
を利用すればJava起動引数を一括でまとめることもできる- 今回はデフォルトの
jvm.options
にヒープサイズだけ追加したかった(のとenvironment
設定も使って見たかった)ため、これを利用した
- 今回は
- コンテナの
ulimit
コマンドで設定できる値をデフォルト値から上書きする
- ホスト側のファイルをコンテナ側へ渡したりできる
HOST:CONTAINER
の順で設定- トップレベルの
volumes
に名前を定義することで以下のことができる- 複数サービスをまたがってボリュームを利用
- ホスト側へデータを永続化
- 公開するポートの設定
HOST:CONTAINER
の順で設定- 今回は
elasticsearch0*
はそれぞれポート9200
を利用してプロセスを立ち上げているが、ホストマシン経由でコンテナへアクセスする場合にlocalhost:920[1,2,3]
でそれぞれのコンテナのElasticsearch
へアクセスできるように設定しているlocalhost:9201
->elasticsearch01:9200
localhost:9202
->elasticsearch02:9200
localhost:9203
->elasticsearch03:9200
Docker Compose
の中でさらにネットワークを分けられる設定- トップレベルの
networks
にキーを設定しておき、serviceごとのnetworks
でそれを利用することができる - これをserviceに設定すると、同じキーを設定していないserviceからは接続できない
- 最初
kibana01
でnetworks
を設定していなかったのでKibana
->Elasticsearch
へ接続できなくてハマった
- 最初