diff --git a/docker/Dockerfile b/docker/Dockerfile index c2a9bfe14c..e636b71291 100755 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -4,13 +4,13 @@ # Base image start # #################### -FROM ubuntu:16.04 as BASE_IMAGE +FROM debian:9.4-slim as BASE_IMAGE MAINTAINER Roberto Rosario "roberto.rosario@mayan-edms.com" ENV DEBIAN_FRONTEND noninteractive ENV PYTHONUNBUFFERED 1 -ENV LANG en_US.UTF-8 +ENV LANG C.UTF-8 ENV PROJECT_INSTALL_DIR=/usr/local/lib/python2.7/dist-packages/mayan ARG APT_PROXY @@ -20,23 +20,19 @@ RUN if [ "${APT_PROXY}" ]; then echo "Acquire::http { Proxy \"http://${APT_PROXY # Install base Ubuntu libraries RUN apt-get update && \ apt-get install -y --no-install-recommends \ - curl \ g++ \ gcc \ - gettext-base \ ghostscript \ gpgv \ graphviz \ libffi-dev \ libjpeg-dev \ libmagic1 \ - libmysqlclient-dev \ + default-libmysqlclient-dev \ libpng-dev \ libpq-dev \ libreoffice \ libtiff-dev \ - locales \ - netcat-openbsd \ poppler-utils \ python-dev \ python-pip \ @@ -52,12 +48,6 @@ apt-get autoremove --purge -y && \ rm -rf /var/lib/apt/lists/* && \ rm -f /var/cache/apt/archives/*.deb -# Switch to UTF locale -RUN echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \ -locale-gen en_US.UTF-8 && \ -update-locale LANG=en_US.UTF-8 && \ -export LC_ALL=en_US.UTF-8 - # Install apt-get-install ADD https://raw.githubusercontent.com/guilhem/apt-get-install/master/apt-get-install /usr/bin/ RUN chmod +x /usr/bin/apt-get-install @@ -77,14 +67,16 @@ ln -s /usr/lib/aarch64-linux-gnu/libjpeg.so /usr/lib/ \ # Build image start # ##################### -FROM python:2-alpine3.7 as BUILDER_IMAGE +FROM debian:9.4-slim as BUILDER_IMAGE + +# Package caching +RUN if [ "${APT_PROXY}" ]; then echo "Acquire::http { Proxy \"http://${APT_PROXY}\"; };" > /etc/apt/apt.conf.d/01proxy; fi WORKDIR /code COPY . /code -RUN apk update && \ - apk add make +RUN apt-get update && apt-get install make python-dev python-pip -y RUN pip install -r requirements/build.txt @@ -129,10 +121,6 @@ COPY docker/entrypoint.sh /usr/local/bin/ RUN ln -s usr/local/bin/entrypoint.sh / # backwards compat ENTRYPOINT ["entrypoint.sh"] -# Healthcheck setup -HEALTHCHECK --interval=15s --timeout=1s --retries=20 \ - CMD curl -s -f http://localhost/authentication/login/ | grep 'form' > /dev/null || exit 1 - EXPOSE 8000 CMD ["mayan"] diff --git a/docker/Dockerfile.ubuntu b/docker/Dockerfile.ubuntu new file mode 100755 index 0000000000..c2a9bfe14c --- /dev/null +++ b/docker/Dockerfile.ubuntu @@ -0,0 +1,150 @@ +# vim:set ft=dockerfile: + +#################### +# Base image start # +#################### + +FROM ubuntu:16.04 as BASE_IMAGE + +MAINTAINER Roberto Rosario "roberto.rosario@mayan-edms.com" + +ENV DEBIAN_FRONTEND noninteractive +ENV PYTHONUNBUFFERED 1 +ENV LANG en_US.UTF-8 +ENV PROJECT_INSTALL_DIR=/usr/local/lib/python2.7/dist-packages/mayan + +ARG APT_PROXY +# Package caching +RUN if [ "${APT_PROXY}" ]; then echo "Acquire::http { Proxy \"http://${APT_PROXY}\"; };" > /etc/apt/apt.conf.d/01proxy; fi + +# Install base Ubuntu libraries +RUN apt-get update && \ +apt-get install -y --no-install-recommends \ + curl \ + g++ \ + gcc \ + gettext-base \ + ghostscript \ + gpgv \ + graphviz \ + libffi-dev \ + libjpeg-dev \ + libmagic1 \ + libmysqlclient-dev \ + libpng-dev \ + libpq-dev \ + libreoffice \ + libtiff-dev \ + locales \ + netcat-openbsd \ + poppler-utils \ + python-dev \ + python-pip \ + python-setuptools \ + python-wheel \ + redis-server \ + supervisor \ + tesseract-ocr \ + zlib1g-dev \ +&& \ +apt-get clean autoclean && \ +apt-get autoremove --purge -y && \ +rm -rf /var/lib/apt/lists/* && \ +rm -f /var/cache/apt/archives/*.deb + +# Switch to UTF locale +RUN echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \ +locale-gen en_US.UTF-8 && \ +update-locale LANG=en_US.UTF-8 && \ +export LC_ALL=en_US.UTF-8 + +# Install apt-get-install +ADD https://raw.githubusercontent.com/guilhem/apt-get-install/master/apt-get-install /usr/bin/ +RUN chmod +x /usr/bin/apt-get-install + +# Install Python clients for PostgreSQL, REDIS, librabbitmq +RUN pip install psycopg2==2.7.3.2 redis==2.10.6 mysql-python==1.2.5 librabbitmq==1.6.1 + +RUN adduser mayan --disabled-password --disabled-login --no-create-home --gecos "" + +# Pillow can't find zlib or libjpeg on aarch64 +RUN if [ "$(uname -m)" = "aarch64" ]; then \ +ln -s /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/ && \ +ln -s /usr/lib/aarch64-linux-gnu/libjpeg.so /usr/lib/ \ +; fi + +##################### +# Build image start # +##################### + +FROM python:2-alpine3.7 as BUILDER_IMAGE + +WORKDIR /code + +COPY . /code + +RUN apk update && \ + apk add make + +RUN pip install -r requirements/build.txt + +RUN make wheel + +RUN chmod 777 dist -R + +##################### +# Final image start # +##################### + +FROM BASE_IMAGE + +WORKDIR /root/ + +COPY --from=BUILDER_IMAGE /code/dist/*.whl . + +# Install build Mayan EDMS +RUN pip install *.whl && \ +rm *.whl + +# Setup supervisor +#RUN mkdir /etc/supervisor.d/ +COPY docker/etc/supervisor/beat.conf /etc/supervisor/conf.d +COPY docker/etc/supervisor/gunicorn.conf /etc/supervisor/conf.d +COPY docker/etc/supervisor/redis.conf /etc/supervisor/conf.d +COPY docker/etc/supervisor/workers.conf /etc/supervisor/conf.d + +# Create the directory for the logs +RUN mkdir /var/log/mayan + +# Fix ownership +RUN chown -R mayan:mayan $PROJECT_INSTALL_DIR + +# Allow flanker to autogenerate its PLY files +RUN chown -R mayan:mayan /usr/local/lib/python2.7/dist-packages/flanker/ + +RUN mkdir /var/lib/mayan +VOLUME ["/var/lib/mayan"] + +COPY docker/entrypoint.sh /usr/local/bin/ +RUN ln -s usr/local/bin/entrypoint.sh / # backwards compat +ENTRYPOINT ["entrypoint.sh"] + +# Healthcheck setup +HEALTHCHECK --interval=15s --timeout=1s --retries=20 \ + CMD curl -s -f http://localhost/authentication/login/ | grep 'form' > /dev/null || exit 1 + +EXPOSE 8000 +CMD ["mayan"] + +RUN rm /root/.cache -R +RUN rm -rf /tmp/* + +RUN apt-get -y autoremove --purge && apt-get -y autoclean && apt-get -y clean + +RUN rm -rf /usr/share/man/* +RUN rm -rf /usr/share/doc/* + +RUN find /var/lib/apt -type f | xargs rm -f +RUN find /var/cache -type f -exec rm -rf {} \; + +RUN find /var/log -type f | while read f; do echo -ne '' > $f; done;