Help us understand the problem. What is going on with this article?

solrをdockerで導入

More than 3 years have passed since last update.

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/#/

Screenshot from 2016-08-16 23-24-53.png

■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

webの方でもcoreが作成されているのが確認できます。
Screenshot from 2016-08-16 23-57-12.png

ホスト側にも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はお忘れなく。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away