151 lines
3.7 KiB
Docker
Executable File
151 lines
3.7 KiB
Docker
Executable File
# 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;
|