docker/server/server.dockerfile
changeset 129 f6b392c37e10
child 130 5eeebcbdee22
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docker/server/server.dockerfile	Tue Jul 23 23:18:21 2024 +0200
@@ -0,0 +1,87 @@
+# set base image (host OS)
+FROM docker.io/python:2.7-alpine as builder
+
+ENV VIRTUALENV=/opt/venv
+
+# set the working directory in the container
+WORKDIR /code
+
+RUN \
+    pip install virtualenv && \
+    virtualenv $VIRTUALENV
+
+ENV PATH="$VIRTUALENV/bin:$PATH"
+
+# copy the dependencies file to the working directory
+COPY docker/server/requirements.txt .
+
+ENV JCC_JDK=/usr/lib/jvm/java-11-openjdk
+ENV JCC_LFLAGS="-L/usr/lib/jvm/java-11-openjdk/jre/lib -ljava -L/usr/lib/jvm/java-11-openjdk/jre/lib/server -ljvm"
+ENV PATH="/usr/lib/jvm/java-11-openjdk/jre/bin:$PATH"
+ENV LD_LIBRARY_PATH="/usr/lib/jvm/java-11-openjdk/jre/lib:/usr/lib/jvm/java-11-openjdk/jre/lib/server"
+# ENV JCC_LFLAGS=-L/usr/lib/jvm/java-8-openjdk/jre/lib/amd64
+
+
+RUN \
+ 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 && \
+ 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 && \
+ wget https://dlcdn.apache.org/lucene/pylucene/pylucene-7.7.1-src.tar.gz && \
+ tar zxvf pylucene-7.7.1-src.tar.gz && \
+ cd pylucene-7.7.1 && \
+ cd jcc && \
+ python setup.py install && \
+ cd .. && \
+ 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 && \
+ sed -i 's/http:\/\/repo1\.maven\.org\/maven2/https:\/\/repo1.maven.org\/maven2/' lucene-java-7.7.1/lucene/common-build.xml && \
+ patchelf --add-needed libjvm.so /opt/venv/lib/python2.7/site-packages/JCC-3.5-py2.7-linux-x86_64.egg/jcc/_jcc2.so && \
+ patchelf --add-needed libjvm.so /opt/venv/lib/python2.7/site-packages/JCC-3.5-py2.7-linux-x86_64.egg/libjcc2.so && \
+ make && \
+ make install && \
+ cd /code && \
+ wget https://hg.dev.iri-research.org/platform/archive/V01.11.tar.gz && \
+ tar zxvf V01.11.tar.gz && \
+ cd platform-V01.11/src/ldt && \
+ python setup.py sdist && \
+ pip install dist/ldt-1.11.tar.gz && \
+ cd /code && \
+ pip install -r requirements.txt
+
+
+FROM docker.io/python:2.7-alpine 
+
+COPY --from=builder /opt/venv /opt/venv
+COPY web/tralalere /code/tralalere
+COPY web/manage.py /code/
+
+
+
+ENV BASEDIR="/code"
+ENV PATH="/opt/venv/bin:$BASEDIR:$PATH"
+
+WORKDIR $BASEDIR
+
+RUN \
+  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 && \
+  mkdir -p /static
+
+
+COPY docker/server/config.py ./tralalere/
+
+COPY docker/server/tralalere.yml .
+COPY --chmod=0755 docker/server/entrypoint.sh /
+
+ENV PYTHONPATH "/code/"
+ENV DJANGO_SETTINGS_MODULE tralalere.settings
+ENV DEBUG "False"
+ENV DATABASE_URL ""
+ENV DJANGO_SECRET ""
+
+ENV PATH="/usr/lib/jvm/java-11-openjdk/jre/bin:$PATH"
+ENV LD_LIBRARY_PATH="/usr/lib/jvm/java-11-openjdk/jre/lib:/usr/lib/jvm/java-11-openjdk/jre/lib/server"
+
+EXPOSE 8000
+
+ENTRYPOINT ["/entrypoint.sh"]
+
+# # command to run on container start
+CMD [ "/opt/venv/bin/uwsgi", "--yaml", "/code/tralalere.yml"]
\ No newline at end of file