Docker使用supervisor構建solr

構建Centos-solr-supervisor時首先要想清楚,solr的目錄該如何規整,用什麼方式來啓動solr(jetty/tomact),並且solr不同於其項目(如果用war包的形式進行部署)需進行服務的不斷重啓,那麼就會牽扯到Docker容器的機制問題,Docker鏡像的機制——當你第一次構建完鏡像,鏡像裏的內容不會發生改變只有提交更改纔會更改鏡像並生成新的鏡像,所有有必要首先考慮solr的目錄問題及部署問題。

1.構建solr所用的基礎鏡像centos-java7-supervisor(此鏡像可以作爲所有應用到java的基礎鏡像)

下載地址:githup:https://github.com/aarongo/cetnos-java-base.git

         Docker:docker pull aarongo/centos-java-base

可以直接下載進行使用

自動構建方式

    Dockerfile
FROM centos:centos6
MAINTAINER  aaron "[email protected]"
RUN yum search java | grep -i --color JDK &&\
    yum -y install java-1.7.0-openjdk java-1.7.0-openjdk-devel &&\
    ls -l /usr/lib/jvm/ &&\
    echo "export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64" >> /etc/profile
CMD bash -l


    運行方式
docker run -it aarongo/centos-java-supervisor


    檢測結果

165722_PpEe_2277525.png

到此基礎鏡像構建完成

2.構建centos-solr-supervisor鏡像(以centos-java-supervisor爲基礎進行solr鏡像的配置)

下載地址:

                Github:https://github.com/aarongo/centos-solr-supervisor.git

                Docker:docker pull aarongo/centos-solr-supervisor

因爲下載solr軟件包時速度非常慢,所以將solr軟件包做一個鏡像

下載地址:

                Github:https://github.com/aarongo/solr-bse.git

                Docker:docker pull aarongo/solr-base

自動構建方式:

solr-base Dockerfile
FROM aarongo/centos-java-supervisor
MAINTAINER  aaron "[email protected]"
RUN yum -y install wget tar
RUN cd / && wget http://mirrors.hust.edu.cn/apache/lucene/solr/4.8.1/solr-4.8.1.tgz && tar xzf solr-4.8.1.tgz


centos-solr Dockerfile
FROM aarongo/centos-java-supervisor
MAINTAINER  aaron "[email protected]"
#Install supervisor
RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
RUN yum -y update  && yum -y install python-pip && /usr/bin/pip install supervisor
RUN mkdir -p /etc/supervisor/conf.d && mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisord.conf
VOLUME /var/log/supervisor
#Install sshd
RUN yum install -y openssh-server && sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
# select root pasword
RUN echo "root:pasword" | chpasswd && echo "root   ALL=(ALL)       ALL" >> /etc/sudoers &&\
    ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key &&\
    mkdir /var/run/sshd
#install tomcat
RUN java -version && yum -y install wget && yum -y install tar
RUN cd /tmp && wget http://www.us.apache.org/dist/tomcat/tomcat-7/v7.0.57/bin/apache-tomcat-7.0.57.tar.gz && cd /tmp && tar xzf apache-tomcat-7.0.57.tar.gz &&  mv apache-tomcat-7.0.57 /usr/local/tomcat && mkdir /solrdeploy && chmod +x /usr/local/tomcat/bin/*
ADD ./server.xml /usr/local/tomcat/conf/
ADD ./tomcat-users.xml /usr/local/tomcat/conf/
#Installing Apache Commons Loggins
RUN wget http://archive.apache.org/dist/commons/logging/binaries/commons-logging-1.1.3-bin.tar.gz &&\
    tar zxf commons-logging-1.1.3-bin.tar.gz && cd commons-logging-1.1.3 &&\
    cp commons-logging-*.jar /usr/local/tomcat/lib
#Installing SLF4J
RUN wget http://www.slf4j.org/dist/slf4j-1.7.7.tar.gz && tar xzf slf4j-1.7.7.tar.gz &&\
    cd slf4j-1.7.7 && cp slf4j-*.jar /usr/local/tomcat/lib
#Installing solr 
RUN cd /tmp && wget http://mirrors.hust.edu.cn/apache/lucene/solr/4.8.1/solr-4.8.1.tgz && tar xzf solr-4.8.1.tgz 
RUN mkdir  /solrhome && cp /solr-4.8.1/dist/solr-4.8.1.war /solrdeploy/solr.war && cp -r /solr-4.8.1/example/solr /solrhome/
#ADD ./schema.xml /home/solr/collection1/conf/
VOLUME ["/solrdeploy"]
VOLUME ["/solrhome"]
EXPOSE 22 8080
CMD ["/usr/bin/supervisord"]
#此處的VOLUME 外部目錄一定要與容器內部目錄結構相同 如果不相同會出現構建後運行時容器內部目錄會空


運行方式
docker run -p  1028:22 -p 8080:8080 -it -v /solrdeploy:/solrdeploy -v /dockersolr:/solrhome aarongo/centos-solr-supervisor (前臺顯示)
#Or
docker run -d -p  1028:22 --name solr -v /solrdeploy:/solrdeploy -v /dockersolr:/solrhome aarongo/centos-solr-supervisor(後臺運行)


注意:

啓動後等待項目部署完成後停止,刪除項目部署文件(solr.war),進行分詞器的配置(我容器用的是 TOMCAT)

安裝分詞器

下載mmseg4j :http://yunpan.cn/cAeNC8buXBZzv  提取碼 293a

jar包下載地址:http://yunpan.cn/cAehVEPNZ3Uwe  提取碼 200d

1.將\mmseg4j-1.9.1\dist目錄下的jar包全部放到部署目錄下solr/WEB-INF\lib下

2.在solrhome目錄下的connection1/conf/schema.xml文件裏添加

<fieldType name="text_mmseg4j_complex" class="solr.TextField" positionIncrementGap="100" >
      <analyzer>
        <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="dic"/>
      </analyzer>
    </fieldType>
    <fieldType name="text_mmseg4j_maxword" class="solr.TextField" positionIncrementGap="100" >
      <analyzer>
        <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="dic"/>
      </analyzer>
    </fieldType>
    <fieldType name="text_mmseg4j_simple" class="solr.TextField" positionIncrementGap="100" >
      <analyzer>
        <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="dic"/>
      </analyzer>
    </fieldType>


3.再次運行tomcat會報如下錯誤

174446_flct_2277525.png

4.關閉tomcat,修改mmseg4j jar包的源代碼 \mmseg4j-1.9.1\mmseg4j-analysis\src\main\java\com\chenlb\mmseg4j\analysis\MMSegTokenizer.java

174626_3ySI_2277525.png

5.因爲mmseg4j是maven項目所以使用mvn clean package -DskipTests進行重新編譯生成新的jar包

在Windows下dos 進入 \mmseg4j-1.9.1\mmseg4j-analysis\src\main\java\com\chenlb\mmseg4j\analysis

使用mvn clean package -DskipTests進行編譯

在當前目錄中會生成targe目錄在其目錄下生產一個新的jar包替換掉solr/WEB-INF\lib下同名的jar包即可

175123_En5C_2277525.jpg

175352_WFNK_2277525.png

6.啓動tomcat 如果你看到如下界面證明solr和分詞器都已經成功

175648_KX0e_2277525.png

至此Docker-solr基礎環境構建完成


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章