solrをdockerで導入 2017年版
- 以前書いた「solrをdockerで導入から」時間が経過したので今のバージョン(6.6.0 stable?)で書き直してみます。
前提
- dockerとdocker composeを使います。
- OSはubuntu16.04です。(linuxなら多分違いは無い)
以下のコマンドでインストールできると思いますが、dockerのバージョンが古いと思うのでサイトからのインストールを推奨します。
$ sudo apt install docker.io
$ sudo apt install docker-compose
準備
- coreを配置するローカルディレクトリを作成する。
$ sudo mkdir /data
$ sudo chown 8983:8983 /data
Solrコンテナのダウンロード
- DockerとDocker composeのインストールが出来たら
以下のコマンドでsolrのコンテナをダウンロード
$ sudo docker pull solr
junk@ubuntu-vm:~/solr$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
solr latest 4bc40f825e4c 2 weeks ago 518MB
docker composeの用意
自分のhomeディレクトリに適当にディレクトリを作成し、以下のファイルを作成する。
docker-compose.yml
version: '2'
services:
solr:
image: solr
ports:
- "8983:8983"
volumes:
- /data:/opt/solr/server/solr/mycores
restart: always
以下のコマンドでsolrコンテナを起動する。
$ cd /home/junk/solr
$ sudo docker-compose up -d
作成が成功すると以下の感じに。
junk@ubuntu-vm:~/solr$ sudo docker-compose up -d
Creating solr_solr_1
junk@ubuntu-vm:~/solr$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c42fa13db748 solr "docker-entrypoint..." About a minute ago Up About a minute 0.0.0.0:8983->8983/tcp solr_solr_1
この段階で、ブラウザで以下のアドレスにアクセスすれば画面が表示できる。
http://127.0.0.1:8983/
coreの作成
- Solrコンテナが起動したまま以下のコマンドを実行し、coreを作成する
- 下記「solr_solr_1」部の1つ目のsolrはdocker-compose.ymlのフォルダ名による。適時変更。
$ sudo docker exec -it --user=solr solr_solr_1 solr-precreate test
solr_solr_1は、コンテナの名前
testは、coreの名前
デス。
実行すると以下のようになります。
junk@ubuntu-vm:~/solr$ sudo docker exec -it --user=solr solr_solr_1 solr-precreate test
Executing /opt/docker-solr/scripts/solr-precreate test
created test
Port 8983 is already being used by another process (pid: 1)
Please choose a different port using the -p option.
- solrのコンテナを再起動する
$ sudo docker restart solr_solr_1
- コンテナを再起動し、サイトを再表示すればcoreがロードされます。
- ローカルのコアディレクトリーにtest coreが作成されていることを確認。
junk@ubuntu-vm:/data$ ll
合計 12
drwxr-xr-x 3 8983 8983 4096 7月 8 01:24 ./
drwxr-xr-x 25 root root 4096 7月 7 00:58 ../
drwxr-xr-x 4 8983 8983 4096 7月 8 01:28 test/
https://hub.docker.com/_/solr/
にも色々書いてあるけど、分かりやすくは無いのでまとめてみた。