概要
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の公式コンテナを使えばインストールを省略できる。
ApacheSolrのダウンロード
下記サイトからダウンロードします。
※ 今回は、「solr-4.7.2.tgz」をダウンロードしました
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
コンテナの起動設定を作成します。
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
コンテナ作成 & 起動
下記コマンドでビルドします。
ターミナル
$ docker-compose up -d --build
コンテナ再起動
コンテナを再起動したい場合は、下記コマンドを実行します。
ターミナル
$ docker-compose restart solr4
コンテナ削除
コンテナを破棄したい場合は、下記コマンドを実行します。
ターミナル
$ docker-compose down
永続化したボリュームも消したい場合は、下記オプションを付ける。
ターミナル
$ 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。
curlで検索
デフォルトで「collection1」というCoreができているようなので、検索してみる。
ターミナル
$ 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":[]
}}
以上