FROM debian:13

RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
    export DEBIAN_FRONTEND=noninteractive &&\
    apt update && apt dist-upgrade -y --no-install-recommends &&\
    apt install -y --no-install-recommends python3 python3-bcrypt python3-dateutil python3-psycopg2 python3-levenshtein python3-flask &&\
    apt install -y --no-install-recommends python3-flask-babel python3-flask-login python3-flaskext.wtf python3-markdown python3-numpy &&\
    apt install -y --no-install-recommends python3-pandas python3-jinja2 python3-flask-cors python3-flask-restful p7zip-full python3-flask-bcrypt &&\
    apt install -y --no-install-recommends python3-wand python3-rdflib python3-requests python3-fiona python3-magic python3-yaml &&\
    apt install -y --no-install-recommends apache2 libapache2-mod-wsgi-py3 brotli python3-coverage python3-pytest python3-pytest-cov exiftran &&\
    apt install -y --no-install-recommends iipimage-server libvips-tools python3-email-validator python3-svgwrite python3-shapely &&\
    apt install -y --no-install-recommends python3-validators python3-jwt python3-python-flask-jwt-extended python3-bs4 python3-unidecode &&\
    apt install -y --no-install-recommends gettext npm python3-pip git postgresql-client-17 python3-xmltodict python3-lxml &&\
    apt install -y --no-install-recommends dos2unix locales locales-all vim w3c-sgml-lib nano less python3-flask-openapi3 python3-pydantic curl &&\
    mkdir -p /var/www/openatlas /var/www/.cache /var/www/.local /var/www/.npm &&\
    mkdir -p /var/www/openatlas/files/uploads &&\
    mkdir -p /var/www/openatlas/files/processed_images/resized &&\
    mkdir -p /var/www/openatlas/files/export/arche /var/www/openatlas/files/export/rdf /var/www/openatlas/files/export/sql &&\
    chown -R www-data:www-data /var/www/.cache /var/www/.local /var/www/.npm /var/log/apache2 /var/run/apache2 /var/www/openatlas
RUN cp -rp /usr/lib/iipimage-server/ /var/www/iipsrv/ &&\
    mkdir /var/www/iipsrv/tests &&\
    chown -R www-data /var/www/iipsrv/ &&\
    chmod 777 -R /var/www/iipsrv/
RUN rm /etc/apache2/mods-available/iipsrv.conf
COPY /install/iipsrv.conf /etc/apache2/mods-available/iipsrv.conf
COPY --chown=www-data:www-data / /var/www/openatlas/
RUN cd /var/www/openatlas && cp install/container/entrypoint.sh /entrypoint.sh &&\
    cp install/example_apache.conf /etc/apache2/sites-available/000-default.conf &&\
    chmod a+x /entrypoint.sh &&\
    dos2unix /entrypoint.sh &&\
    sed -i 's~^Listen.*~Listen 8080~' /etc/apache2/ports.conf &&\
    sed -i 's~^<VirtualHost \*:80>~<VirtualHost *:8080>~' /etc/apache2/sites-available/000-default.conf &&\
    sed -i 's~ServerName.*~~' /etc/apache2/sites-available/000-default.conf &&\
    sed -i 's~</VirtualHost>~ErrorLogFormat "{ \\"time\\":\\"%{%Y-%m-%d}tT%{%T}t.%{msec_frac}tZ\\", \\"function\\" : \\"[%-m:%l]\\" , \\"process\\" : \\"[pid %P:tid %T]\\" , \\"message\\" : \\"%M\\" ,\ \\"referer\\"\ : \\"%{Referer}i\\" },"\nLogFormat "{ \\"time\\":\\"%{%Y-%m-%d}tT%{%T}t.%{msec_frac}tZ\\", \\"process\\":\\"%D\\", \\"filename\\":\\"%f\\", \\"remoteIP\\":\\"%a\\", \\"host\\":\\"%V\\", \\"request\\":\\"%U\\", \\"query\\":\\"%q\\", \\"method\\":\\"%m\\", \\"status\\":\\"%>s\\", \\"userAgent\\":\\"%{User-agent}i\\", \\"referer\\":\\"%{Referer}i\\" }," OpenAtlasLog\nCustomLog /dev/stdout OpenAtlasLog\nErrorLog /dev/stdout\n</VirtualHost>~' /etc/apache2/sites-available/000-default.conf &&\
    sed -i 's~</VirtualHost>~<IfModule mod_brotli.c>\nAddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript application/json application/xml\nBrotliCompressionQuality 4\n</IfModule>\n</VirtualHost>~' /etc/apache2/sites-available/000-default.conf
RUN a2enmod iipsrv &&\
    a2enmod fcgid &&\
    a2enmod brotli
USER www-data
RUN cd /var/www/openatlas/openatlas/static &&\
    npm install \ &&\
    service apache2 restart

EXPOSE 8080
ENV APACHE_CONFDIR /etc/apache2
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8

ENTRYPOINT [ "/entrypoint.sh" ]
CMD [ "/usr/sbin/apache2", "-D", "FOREGROUND" ]
