docker/server/server.dockerfile
changeset 129 f6b392c37e10
child 130 5eeebcbdee22
equal deleted inserted replaced
128:6ec3049096dd 129:f6b392c37e10
       
     1 # set base image (host OS)
       
     2 FROM docker.io/python:2.7-alpine as builder
       
     3 
       
     4 ENV VIRTUALENV=/opt/venv
       
     5 
       
     6 # set the working directory in the container
       
     7 WORKDIR /code
       
     8 
       
     9 RUN \
       
    10     pip install virtualenv && \
       
    11     virtualenv $VIRTUALENV
       
    12 
       
    13 ENV PATH="$VIRTUALENV/bin:$PATH"
       
    14 
       
    15 # copy the dependencies file to the working directory
       
    16 COPY docker/server/requirements.txt .
       
    17 
       
    18 ENV JCC_JDK=/usr/lib/jvm/java-11-openjdk
       
    19 ENV JCC_LFLAGS="-L/usr/lib/jvm/java-11-openjdk/jre/lib -ljava -L/usr/lib/jvm/java-11-openjdk/jre/lib/server -ljvm"
       
    20 ENV PATH="/usr/lib/jvm/java-11-openjdk/jre/bin:$PATH"
       
    21 ENV LD_LIBRARY_PATH="/usr/lib/jvm/java-11-openjdk/jre/lib:/usr/lib/jvm/java-11-openjdk/jre/lib/server"
       
    22 # ENV JCC_LFLAGS=-L/usr/lib/jvm/java-8-openjdk/jre/lib/amd64
       
    23 
       
    24 
       
    25 RUN \
       
    26  apk add --no-cache postgresql-client postgresql-libs libxml2 libxslt libmemcached openjdk11 apache-ant bash jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev && \
       
    27  apk add --no-cache --virtual .build-deps build-base postgresql-dev libxml2-dev libxslt-dev linux-headers sed wget patchelf git jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev && \
       
    28  wget https://dlcdn.apache.org/lucene/pylucene/pylucene-7.7.1-src.tar.gz && \
       
    29  tar zxvf pylucene-7.7.1-src.tar.gz && \
       
    30  cd pylucene-7.7.1 && \
       
    31  cd jcc && \
       
    32  python setup.py install && \
       
    33  cd .. && \
       
    34  sed -i '1s/^/PREFIX_PYTHON=\/opt\/venv\nANT=JAVA_HOME=\/usr\/lib\/jvm\/java-11-openjdk \/usr\/bin\/ant\nPYTHON=$(PREFIX_PYTHON)\/bin\/python\nJCC=$(PYTHON) -m jcc --shared\nNUM_FILES=8\n/' Makefile && \
       
    35  sed -i 's/http:\/\/repo1\.maven\.org\/maven2/https:\/\/repo1.maven.org\/maven2/' lucene-java-7.7.1/lucene/common-build.xml && \
       
    36  patchelf --add-needed libjvm.so /opt/venv/lib/python2.7/site-packages/JCC-3.5-py2.7-linux-x86_64.egg/jcc/_jcc2.so && \
       
    37  patchelf --add-needed libjvm.so /opt/venv/lib/python2.7/site-packages/JCC-3.5-py2.7-linux-x86_64.egg/libjcc2.so && \
       
    38  make && \
       
    39  make install && \
       
    40  cd /code && \
       
    41  wget https://hg.dev.iri-research.org/platform/archive/V01.11.tar.gz && \
       
    42  tar zxvf V01.11.tar.gz && \
       
    43  cd platform-V01.11/src/ldt && \
       
    44  python setup.py sdist && \
       
    45  pip install dist/ldt-1.11.tar.gz && \
       
    46  cd /code && \
       
    47  pip install -r requirements.txt
       
    48 
       
    49 
       
    50 FROM docker.io/python:2.7-alpine 
       
    51 
       
    52 COPY --from=builder /opt/venv /opt/venv
       
    53 COPY web/tralalere /code/tralalere
       
    54 COPY web/manage.py /code/
       
    55 
       
    56 
       
    57 
       
    58 ENV BASEDIR="/code"
       
    59 ENV PATH="/opt/venv/bin:$BASEDIR:$PATH"
       
    60 
       
    61 WORKDIR $BASEDIR
       
    62 
       
    63 RUN \
       
    64   apk add --no-cache postgresql-client postgresql-libs libxml2 libxslt libmemcached openjdk11 apache-ant bash jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev bash && \
       
    65   mkdir -p /static
       
    66 
       
    67 
       
    68 COPY docker/server/config.py ./tralalere/
       
    69 
       
    70 COPY docker/server/tralalere.yml .
       
    71 COPY --chmod=0755 docker/server/entrypoint.sh /
       
    72 
       
    73 ENV PYTHONPATH "/code/"
       
    74 ENV DJANGO_SETTINGS_MODULE tralalere.settings
       
    75 ENV DEBUG "False"
       
    76 ENV DATABASE_URL ""
       
    77 ENV DJANGO_SECRET ""
       
    78 
       
    79 ENV PATH="/usr/lib/jvm/java-11-openjdk/jre/bin:$PATH"
       
    80 ENV LD_LIBRARY_PATH="/usr/lib/jvm/java-11-openjdk/jre/lib:/usr/lib/jvm/java-11-openjdk/jre/lib/server"
       
    81 
       
    82 EXPOSE 8000
       
    83 
       
    84 ENTRYPOINT ["/entrypoint.sh"]
       
    85 
       
    86 # # command to run on container start
       
    87 CMD [ "/opt/venv/bin/uwsgi", "--yaml", "/code/tralalere.yml"]