DockerでApache Solr 4系を作ってみる

## 概要
Apache Solrの4系の環境をDockerで作りたかったので調べた内容をまとめます。
※ 4系は公式コンテナが無いようなので手動で作成してみる

## ファイル構成
下記のようなファイル構成となります。

```:ファイル一覧
├ Dockerfile
├ docker-compose.yml
├ jdk-8u171-linux-x64.tar.gz   ※ 手動でインストールしたいときのみ
└ solr-4.7.2.tgz               ※ 手動でインストールしたいときのみ
```

## JDKのダウンロード
Oracleのサイトからダウンロードします。
※「jdk-8u171-linux-x64.tar.gz」などをダウンロード

* [Java SE - Downloads | Oracle Technology Network](http://www.oracle.com/technetwork/java/javase/downloads/index.html)

Javaの公式コンテナを使えばインストールを省略できる。

* [Docker - library/java](https://hub.docker.com/_/java/)

## ApacheSolrのダウンロード
下記サイトからダウンロードします。
※ 今回は、「solr-4.7.2.tgz」をダウンロードしました

* [Apache Archives](http://archive.apache.org/dist/lucene/solr/)

## Dockerfile
コンテナを作成するための設定を作成します。

```dockerfile:Dockerfile
FROM openjdk:8-jre

# system update
RUN apt-get -y update && \
    apt-get -y upgrade && \
    apt-get -y install lsof procps wget curl vim less

# locale & timezone (Asia/Tokyo)
RUN apt-get -y install locales && \
    localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8 \
    LANGUAGE ja_JP:ja \
    LC_ALL ja_JP.UTF-8 \
    TZ JST-9 \
    TERM xterm

# apache solr
ENV SOLR_VERSION="4.7.2" 
ENV SOLR_USER="solr" \
    SOLR_UID="8983" \
    SOLR_GROUP="solr" \
    SOLR_GID="8983" \
    SOLR_URL="https://archive.apache.org/dist/lucene/solr/$SOLR_VERSION/solr-$SOLR_VERSION.tgz" \
    SOLR="/usr/solr/solr-$SOLR_VERSION"

RUN wget --progress=bar:force $SOLR_URL -O /tmp/solr.tgz && \
    mkdir -p /usr/solr/ && \
    tar xzvf /tmp/solr.tgz -C /usr/solr/ && \
    rm /tmp/solr.tgz

ENV SOLR_HOME="$SOLR/server"
RUN cp -R $SOLR/example $SOLR_HOME

ENV SOLR_LOG="$SOLR/logs/solr.log"
RUN mkdir $SOLR/logs

RUN groupadd -r --gid $SOLR_GID $SOLR_GROUP && \
    useradd -r --uid $SOLR_UID --gid $SOLR_GID $SOLR_USER && \
    chown -R $SOLR_USER:$SOLR_GROUP $SOLR

WORKDIR $SOLR
EXPOSE 8983
USER $SOLR_USER
ENTRYPOINT /bin/sh -c "cd $SOLR_HOME && java -Dsolr.solr.home=multicore -jar start.jar >> $SOLR_LOG 2>&1"
```
## docker-compose.yml
コンテナの起動設定を作成します。

```yml:docker-compose.yml
version: '3'
services:
  solr4:
    restart: always
    build: .
    container_name: 'solr4'
    ports:
      - "8004:8983"
    volumes:
      - solr4-data:/usr/solr/solr-4.7.2/server/multicore/
      - solr4-logs:/usr/solr/solr-4.7.2/logs/
volumes:
  solr4-data:
    driver: local
  solr4-logs:
    driver: local
```

## コンテナ作成 & 起動
下記コマンドでビルドします。

```bash:ターミナル
$ docker-compose up -d --build
```

## コンテナ再起動
コンテナを再起動したい場合は、下記コマンドを実行します。

```bash:ターミナル
$ docker-compose restart solr4
```

## コンテナ削除
コンテナを破棄したい場合は、下記コマンドを実行します。

```bash:ターミナル
$ docker-compose down
```

永続化したボリュームも消したい場合は、下記オプションを付ける。

```bash:ターミナル
$ docker-compose down -v
```

## 状況確認
コンテナへ接続して、バージョンや起動状況を確認する。

```:ターミナル
$ docker exec -it solr4 bash
```
```:ターミナル(solrコンテナ)
$ java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

$ ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         6  1.1 18.0 2070372 90452 ?       Sl    5月11   0:11 java -jar start.jar --daemon
```

## 管理画面
Apache Solrが起動していれば、下記のURLで確認できると思います。

```
# localhostの場合
http://localhost:8004/solr/

# vagrant(192.168.33.10)の場合
http://192.168.33.10:8004/solr/
```

ブラウザで上記URLへアクセスして管理画面が閲覧できればOK。
![solr4.png](https://qiita-image-store.s3.amazonaws.com/0/142279/2e56d8ea-1307-0869-a64d-711708922995.png)


## curlで検索
デフォルトで「collection1」というCoreができているようなので、検索してみる。

```bash:ターミナル
$ curl "http://192.168.33.10:8004/solr/collection1/select?indent=on&q=hoge&wt=json"
{
  "responseHeader":{
    "status":0,
    "QTime":1,
    "params":{
      "q":"hoge",
      "indent":"on",
      "wt":"json"}},
  "response":{"numFound":0,"start":0,"docs":[]
  }}
```

以上

## 参考サイト
* [Java SE - Downloads | Oracle Technology Network](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
* [Apache Archives](http://archive.apache.org/dist/lucene/solr/)
* [[改訂新版] Apache Solr入門―オープンソース全文検索エンジン](https://books.google.co.jp/books?id=sotSAgAAQBAJ&pg=PA57&lpg=PA57&dq=solr+4.5.1+data&source=bl&ots=37RAaolfOZ&sig=yLkAUuj0irw5_piUnnwVKhppdO4&hl=ja&sa=X&ved=0ahUKEwjw7ZuPiYLbAhWKXbwKHVeeBp8Q6AEISTAE#v=onepage&q=solr%204.5.1%20data&f=false)
* [第1回 Solr4のインストールから起動まで](https://x1.inkenkun.com/archives/110)
* [apache solr インストール](https://qiita.com/inouet/items/fe1e4a1d506a8dc01b27)
* [全文検索エンジン~Apache Solr~をざっくり&きっちり](https://qiita.com/nobi_sann/items/5115d0405e867500cb99)
* [DockerとSolrでサクッと全文検索](https://qiita.com/devneko/items/36cc57821aaac4257764)
* [standaloneのsolrのインデックスのお手軽バックアップ](https://qiita.com/n_slender/items/eb629cfbc53d38eac2f1)