solrをdockerで導入
■前提
dockerとjava8は導入済みのubuntu16.04で。
ubuntuでdockerのインストールは
$ sudo apt-get install docker.io
solrはofficialのものを使います。
色々怖いので。。。
https://hub.docker.com/_/solr/
$ sudo docker pull solr
core用のローカルフォルダを作成
$ sudo mkdir -p /var/solr/cores
$ sudo chown 8983:8983 /var/solr/cores/
※solrコンテナのバージョンが古いとcoreの位置が/opt/solr/server/solrになっているかも。
その場合、下記設定では上手くいきません。最新のコンテナを取得し直しましょう(涙
$ sudo docker run --name solr -d -p 8983:8983 -v /var/solr/cores:/opt/solr/server/solr/mycores -t solr
■webの起動を確認する
http://127.0.0.1:8983/solr/#/
■sample coreを作ってみる
host側のshellで。
$ sudo docker exec -it solr /bin/bash
コンテナのshellで。
テスト用のcoreのtestを作成します。
$ solr create -c test
- 実行結果
solr@2ce0037aae58:/opt/solr/server/solr/mycores$ solr create -c test
Copying configuration to new core instance directory:
/opt/solr/server/solr/test
Creating new core 'test' using command:
http://localhost:8983/solr/admin/cores?action=CREATE&name=test&instanceDir=test
{
"responseHeader":{
"status":0,
"QTime":1286},
"core":"test"}
coreを移動する
$ cd /opt/solr/server/solr
$ mv test mycores
Ctrl+P,Ctrl+Qで一旦コンテナを抜けて、solrコンテナを再起動
$ sudo docker restart solr
ホスト側にもcoreができていることを確認
$ ll
drwxr-xr-x 3 8983 8983 4096 8月 16 23:52 ./
drwxr-xr-x 3 root root 4096 8月 16 23:30 ../
drwxr-xr-x 4 8983 8983 4096 8月 16 23:51 test/
ログフォルダもcoreと同じようにホスト側にボリュームマウントしてあげると良いと思います。
今のコンテナをストップして削除
$ sudo docker stop solr
$ sudo docker rm solr
ログ用フォルダを作ってコンテナ起動
$ sudo mkdir -p /opt/solr/log
$ sudo chown 8983:8983 /opt/solr/log
$ sudo docker run --name solr -d -p 8983:8983 -v /var/solr/cores:/opt/solr/server/solr/mycores -v /opt/solr/log:/opt/solr/server/logs -t solr
dockerコンテナで簡単にsolrを導入できて便利です。
また、coreをホスト側に持てるので気軽にコンテナを変えてsolrのバージョンを変えられます。
#互換性のテストとか簡単にできるね♪
coreに設定をしていってrestartをしてを繰り返すと環境の構築が早いですね。
chown 8983をし忘れるとファイルが読めなくてエラーが出ることがあります。
エラーがでたらまずオーナを確認するといいかも。
コンテナのsolrに変更をしたい場合
ログレベルの変更やキャッシュサイズの変更等でコンテナ内部のファイルを変更したい場合、solrユーザでは制限がある場合、以下のコマンドでrootでのログインができます。
sudo docker exec -u root -it solr /bin/bash
commitはお忘れなく。