Dockerfile 6.26 KB
###########################################################
# Dockerfile de construção do container Solr
# utilizado pelo SEI e pelo SIP
#
# Baseado no CentOS 6.X
############################################################

# Definição da imagem de base para o CentOS 6.X
FROM centos:centos6

# Autor e mantenedor do container
MAINTAINER PEN - Processo Eletrônico Nacional

################## INICIO DA INSTALACAO ######################
# Instalação do Apache Solr seguindo as recomendações descritas na documentação do SEI
# Ref: https://processoeletronico.gov.br/projects/sei/wiki

# Instalação do pacote Java JDK e utilitários utilizados no provisionamento
RUN yum update -y && \ 
    yum install -y java-1.7.0-openjdk wget tar curl which && \
    yum -y clean all

# Criação de usuário de execução do serviço
RUN useradd solr

# TODO: Utilizar wget para obter o pacote da web, removendo-o posteriormente para otimizar o tamanho da imagem
# Obtenção do pacote de instalação do Solr 4.0
ADD apache-solr-4.0.0.tgz /opt/

# Instalação do Apache Solr
RUN mv /opt/apache-solr-4.0.0 /opt/solr && chown -R solr:solr /opt/solr

# Configuração dos parâmetros default
RUN echo "JAVA_OPTIONS='-Dsolr.solr.home=/opt/solr/example/solr $JAVA_OPTIONS'" | tee -a /etc/default/jetty && \
    echo "JETTY_HOME=/opt/solr/example" | tee -a /etc/default/jetty && \
    echo "JETTY_USER=solr" | tee -a /etc/default/jetty

# Configuração do script de inicialização automática
RUN wget -q -O /etc/init.d/solr https://raw.githubusercontent.com/eclipse/jetty.project/jetty-7/jetty-distribution/src/main/resources/bin/jetty.sh && \
    chmod +x /etc/init.d/solr

# Criação dos diretório de armazenamento de índices
RUN mkdir /var/opt/sei && \
    mkdir /var/opt/sei/sei-protocolos && ln -s /var/opt/sei/sei-protocolos  /opt/solr/example/solr/ && \
    mkdir /var/opt/sei/sei-bases-conhecimento && ln -s /var/opt/sei/sei-bases-conhecimento  /opt/solr/example/solr/ && \
    mkdir /var/opt/sei/sei-publicacoes && ln -s /var/opt/sei/sei-publicacoes /opt/solr/example/solr/

# Copia do conjunto de configurações padrão do Solr 
RUN cp -R /opt/solr/example/solr/collection1/conf /var/opt/sei/sei-protocolos/ && \
    cp -R /opt/solr/example/solr/collection1/conf /var/opt/sei/sei-bases-conhecimento/ && \
    cp -R /opt/solr/example/solr/collection1/conf /var/opt/sei/sei-publicacoes/

# Removeção dos arquivos schema.xml e solrconfig.xml das cópias
RUN rm /var/opt/sei/sei-protocolos/conf/schema.xml && \
    rm /var/opt/sei/sei-protocolos/conf/solrconfig.xml && \
    rm /var/opt/sei/sei-bases-conhecimento/conf/schema.xml && \
    rm /var/opt/sei/sei-bases-conhecimento/conf/solrconfig.xml && \
    rm /var/opt/sei/sei-publicacoes/conf/schema.xml && \
    rm /var/opt/sei/sei-publicacoes/conf/solrconfig.xml

# Configuração dos índices do SEI
ADD index/sei-protocolos-schema.xml /var/opt/sei/sei-protocolos/conf/sei-protocolos-schema.xml
ADD index/sei-bases-conhecimento-schema.xml /var/opt/sei/sei-bases-conhecimento/conf/sei-bases-conhecimento-schema.xml
ADD index/sei-publicacoes-schema.xml /var/opt/sei/sei-publicacoes/conf/sei-publicacoes-schema.xml
ADD index/sei-protocolos-config.xml /var/opt/sei/sei-protocolos/conf/sei-protocolos-config.xml
ADD index/sei-bases-conhecimento-config.xml /var/opt/sei/sei-bases-conhecimento/conf/sei-bases-conhecimento-config.xml
ADD index/sei-publicacoes-config.xml /var/opt/sei/sei-publicacoes/conf/sei-publicacoes-config.xml

# Criação de diretório de conteúdo para os índices
RUN mkdir /var/opt/sei/sei-protocolos/conteudo && \
    mkdir /var/opt/sei/sei-bases-conhecimento/conteudo && \
    mkdir /var/opt/sei/sei-publicacoes/conteudo

# Configuração dos links a instalação do Solr e o índice Protocolo
RUN ln -s /opt/solr/contrib/ /var/opt/sei/sei-protocolos/contrib && \
    ln -s /opt/solr/dist/ /var/opt/sei/sei-protocolos/dist && \
    ln -s /opt/solr/example/lib/ /var/opt/sei/sei-protocolos/lib

# Configuração dos links a instalação do Solr e o índice Base de Conhecimento
RUN ln -s /opt/solr/contrib/ /var/opt/sei/sei-bases-conhecimento/contrib && \
    ln -s /opt/solr/dist/ /var/opt/sei/sei-bases-conhecimento/dist && \
    ln -s /opt/solr/example/lib/ /var/opt/sei/sei-bases-conhecimento/lib

# Configuração dos links a instalação do Solr e o índice Publicações
RUN ln -s /opt/solr/contrib/ /var/opt/sei/sei-publicacoes/contrib && \
    ln -s /opt/solr/dist/ /var/opt/sei/sei-publicacoes/dist && \
    ln -s /opt/solr/example/lib/ /var/opt/sei/sei-publicacoes/lib

# Configuração de log e permissões de pastas
RUN mkdir /var/log/solr
RUN chown solr:solr -R /opt/solr /var/opt/sei /var/log/solr 

# Construção dos índices de protocolos do SEI
RUN /etc/init.d/solr start && sleep 20 && \
    curl 'http://localhost:8983/solr/admin/cores?action=CREATE&name=sei-protocolos&instanceDir=/var/opt/sei/sei-protocolos&config=sei-protocolos-config.xml&schema=sei-protocolos-schema.xml&dataDir=/var/opt/sei/sei-protocolos/conteudo'

# Construção dos índices da base de conhecimento do SEI
RUN /etc/init.d/solr start && sleep 20 && \    
    curl 'http://localhost:8983/solr/admin/cores?action=CREATE&name=sei-bases-conhecimento&instanceDir=/var/opt/sei/sei-bases-conhecimento&config=sei-bases-conhecimento-config.xml&schema=sei-bases-conhecimento-schema.xml&dataDir=/var/opt/sei/sei-bases-conhecimento/conteudo'

# Construção dos índices de publicações do SEI
RUN /etc/init.d/solr start && sleep 20 && \    
    curl 'http://localhost:8983/solr/admin/cores?action=CREATE&name=sei-publicacoes&instanceDir=/var/opt/sei/sei-publicacoes&config=sei-publicacoes-config.xml&schema=sei-publicacoes-schema.xml&dataDir=/var/opt/sei/sei-publicacoes/conteudo'

# Construção dos índices de publicações do SEI
RUN /etc/init.d/solr start && sleep 20 && \ 
    curl 'http://localhost:8983/solr/admin/cores?action=RELOAD&core=sei-protocolos' && \
    curl 'http://localhost:8983/solr/admin/cores?action=RELOAD&core=sei-bases-conhecimento' && \
    curl 'http://localhost:8983/solr/admin/cores?action=RELOAD&core=sei-publicacoes'

##################### FIM DA INSTALACAO #####################

# Definição do terminal a ser utilizado
ENV TERM xterm

WORKDIR /opt/solr/example

# Exposição da porta de conexão ao Apache
EXPOSE 8983

# Inicialização dos serviços Apache e Memcache
CMD ["java", "-jar", "start.jar"]