3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-05-11

概要

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。
solr4.png

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":[]
  }}

以上

参考サイト

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?