Добавил сборку образа docker для solr 3.5.0

stage8
Aleksey 9 years ago
parent 0deabbb46f
commit 4e9d4b4445
  1. 149
      Dockerfile.solr
  2. 19
      docker-compose.yml
  3. 6
      proj/settings.py
  4. 4
      schema.xml

@ -0,0 +1,149 @@
FROM ubuntu:12.04.5
# defines root user, to perform privileged operations
USER root
# enable apt mirrors (best performance due to use the closest repository)
RUN readonly APT_SOURCES="/etc/apt/sources.list" \
&& readonly UBUNTU_RELEASE_NAME="$(cat /etc/lsb-release | grep CODENAME | cut -d '=' -f2)" \
&& sed --in-place \
--regexp-extended \
--expression \
"1s/^/deb mirror:\/\/mirrors\.ubuntu\.com\/mirrors\.txt "${UBUNTU_RELEASE_NAME}"-security main restricted universe multiverse\n\n/" \
--expression \
"1s/^/deb mirror:\/\/mirrors\.ubuntu\.com\/mirrors\.txt "${UBUNTU_RELEASE_NAME}"-backports main restricted universe multiverse\n/" \
--expression \
"1s/^/deb mirror:\/\/mirrors\.ubuntu\.com\/mirrors\.txt "${UBUNTU_RELEASE_NAME}"-updates main restricted universe multiverse\n/" \
--expression \
"1s/^/deb mirror:\/\/mirrors\.ubuntu\.com\/mirrors\.txt "${UBUNTU_RELEASE_NAME}" main restricted universe multiverse\n/" \
--expression \
"1s/^/\# Enable Ubuntu mirrors and multiverse\n/" \
"${APT_SOURCES}"
# upgrade Ubuntu packages, install security updates and required packages
RUN readonly UBUNTU_PACKAGES=" \
curl \
" \
&& apt-get update \
&& apt-get upgrade --assume-yes \
&& apt-get install --no-install-recommends \
--assume-yes \
${UBUNTU_PACKAGES} \
# remove apt cache in order to improve Docker image size
&& apt-get clean
## Solr
# environment variables
ENV SOLR_VERSION 3.5.0
ENV SOLR_USER solr
ENV SOLR_UID 8983
ENV SOLR_PORT 8983
# declare required packages
RUN readonly SOLR_PACKAGES=" \
openjdk-6-jre-headless \
tomcat6 \
" \
# install packages
&& apt-get install \
--no-install-recommends \
--assume-yes \
${SOLR_PACKAGES} \
# remove apt cache in order to improve Docker image size
&& apt-get clean
# create group
RUN groupadd \
--system \
--gid ${SOLR_UID} \
${SOLR_USER} \
# create user and add to group
&& useradd \
--system \
--uid ${SOLR_UID} \
--gid ${SOLR_USER} \
${SOLR_USER}
# create temp folder
RUN mkdir /tmp/solr \
&& cd /tmp/solr \
# download Solr
&& curl \
--silent \
--show-error \
--location \
--output apache-solr-${SOLR_VERSION}.tgz \
https://archive.apache.org/dist/lucene/solr/${SOLR_VERSION}/apache-solr-${SOLR_VERSION}.tgz \
# extract Solr
&& tar \
--extract \
--gunzip \
--file \
apache-solr-${SOLR_VERSION}.tgz \
--directory \
/opt \
# link Solr folder
&& ln \
--symbolic \
--force \
/opt/apache-solr-${SOLR_VERSION} \
/opt/solr \
# change permissions
&& chown \
--recursive \
${SOLR_USER}:${SOLR_USER} \
/opt/apache-solr-${SOLR_VERSION} \
&& chown \
--recursive \
${SOLR_USER}:${SOLR_USER} \
/opt/solr \
# purge source files
&& cd / \
&& rm \
--recursive \
--force \
/tmp/solr
ADD schema.xml /opt/apache-solr-3.5.0/example/solr/conf/schema.xml
## DUMB-init
# more information at: https://github.com/Yelp/dumb-init
# environment variables
ENV DUMB_INIT_VERSION 1.2.0
# download
RUN mkdir \
--parents \
/tmp/dumb-init \
&& cd /tmp/dumb-init \
&& curl \
--silent \
--show-error \
--location \
--remote-name \
https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_amd64.deb \
# install
&& dpkg \
--install \
dumb-init_${DUMB_INIT_VERSION}_amd64.deb \
# remove temp folder
&& cd / \
&& rm \
--force \
--recursive \
/tmp/dumb-init
## Docker specifics
# expose Solr service port
EXPOSE ${SOLR_PORT}
# drop back to the regular Solr user - good practice
USER ${SOLR_USER}
# change workdir to Solr folder
WORKDIR /opt/solr/example
# docker entrypoint/cmd configuration
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
CMD ["java","-Xmx256m","-jar","start.jar"]

@ -13,7 +13,7 @@ services:
links: links:
- mysql:exmap-mysql - mysql:exmap-mysql
- redis:exmap-redis - redis:exmap-redis
- elastic:exmap-elastic - solr:exmap-solr
environment: environment:
- DEBUG=True - DEBUG=True
- LOCAL_DEV=True - LOCAL_DEV=True
@ -25,6 +25,9 @@ services:
- MYSQL_DATABASE=expomap - MYSQL_DATABASE=expomap
- ELASTICSEARCH_HOST=elastic - ELASTICSEARCH_HOST=elastic
- EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend - EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
- SEARCH_ENGINE=haystack.backends.solr_backend.SolrEngine
- SEARCH_URI=http://solr:8983/solr
- SEARCH_INDEX_NAME=haystack
mysql: mysql:
restart: always restart: always
@ -45,12 +48,10 @@ services:
volumes: volumes:
- ./data/redis:/var/lib/redis - ./data/redis:/var/lib/redis
elastic: solr:
restart: always build:
image: elasticsearch:2.4.6 context: .
container_name: exmap-elastic dockerfile: Dockerfile.solr
container_name: exmap-solr
ports: ports:
- 9200:9200 - "8983:8983"
- 9300:9300
volumes:
- ./data/elasticsearch:/usr/share/elasticsearch/data

@ -437,9 +437,9 @@ PYMORPHY_DICTS = {
# search backend # search backend
HAYSTACK_CONNECTIONS = { HAYSTACK_CONNECTIONS = {
'default': { 'default': {
'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine', 'ENGINE': os.environ.get('SEARCH_ENGINE'),
'URL': 'http://%s:9200/' % os.environ.get('ELASTICSEARCH_HOST'), 'URL': os.environ.get('SEARCH_URI'),
'INDEX_NAME': 'haystack', 'INDEX_NAME': os.environ.get('SEARCH_INDEX_NAME'),
}, },
} }

@ -71,7 +71,7 @@
<tokenizer class="solr.StandardTokenizerFactory"/> <tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" <filter class="solr.StopFilterFactory"
ignoreCase="true" ignoreCase="true"
words="lang/stopwords_en.txt" words="stopwords_en.txt"
enablePositionIncrements="true" enablePositionIncrements="true"
/> />
<filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.LowerCaseFilterFactory"/>
@ -87,7 +87,7 @@
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" <filter class="solr.StopFilterFactory"
ignoreCase="true" ignoreCase="true"
words="lang/stopwords_en.txt" words="stopwords_en.txt"
enablePositionIncrements="true" enablePositionIncrements="true"
/> />
<filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.LowerCaseFilterFactory"/>

Loading…
Cancel
Save