165 lines
4.2 KiB
Docker
Executable File
165 lines
4.2 KiB
Docker
Executable File
# vim:set ft=dockerfile:
|
|
|
|
####################
|
|
# Base image start #
|
|
####################
|
|
|
|
FROM debian:9.4-slim as BASE_IMAGE
|
|
|
|
MAINTAINER Roberto Rosario "roberto.rosario@mayan-edms.com"
|
|
|
|
ENV DEBIAN_FRONTEND noninteractive
|
|
ENV PYTHONUNBUFFERED 1
|
|
ENV LC_ALL C.UTF-8
|
|
ENV PROJECT_INSTALL_DIR=/opt/mayan-edms
|
|
ENV PYTHON_PIP=${PROJECT_INSTALL_DIR}/bin/pip
|
|
|
|
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 \
|
|
g++ \
|
|
gcc \
|
|
ghostscript \
|
|
gpgv \
|
|
gnupg1 \
|
|
graphviz \
|
|
libffi-dev \
|
|
libfuse2 \
|
|
libjpeg-dev \
|
|
libmagic1 \
|
|
default-libmysqlclient-dev \
|
|
libpng-dev \
|
|
libpq-dev \
|
|
libreoffice \
|
|
libtiff-dev \
|
|
poppler-utils \
|
|
python-dev \
|
|
python-setuptools \
|
|
python-virtualenv \
|
|
python-wheel \
|
|
redis-server \
|
|
sane-utils \
|
|
sudo \
|
|
supervisor \
|
|
tesseract-ocr \
|
|
zlib1g-dev \
|
|
libssl-dev \
|
|
&& \
|
|
apt-get clean autoclean && \
|
|
apt-get autoremove --purge -y && \
|
|
rm -rf /var/lib/apt/lists/* && \
|
|
rm -f /var/cache/apt/archives/*.deb
|
|
|
|
# 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
|
|
|
|
RUN adduser mayan --disabled-password --disabled-login --no-create-home --gecos ""
|
|
|
|
# Pillow can't find zlib or libjpeg on aarch64 (ODROID C2)
|
|
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
|
|
|
|
# Pillow can't find zlib or libjpeg on armv7l (ODROID HC1)
|
|
RUN if [ "$(uname -m)" = "armv7l" ]; then \
|
|
ln -s /usr/lib/arm-linux-gnueabihf/libz.so /usr/lib/ && \
|
|
ln -s /usr/lib/arm-linux-gnueabihf/libjpeg.so /usr/lib/ \
|
|
; fi
|
|
|
|
# Discard data when Redis runs out of memory
|
|
RUN echo "maxmemory-policy allkeys-lru" >> /etc/redis/redis.conf
|
|
|
|
# Disable saving the Redis database
|
|
RUN echo "save \"\"" >> /etc/redis/redis.conf
|
|
|
|
# Only provision 1 database
|
|
RUN echo "databases 1" >> /etc/redis/redis.conf
|
|
|
|
#####################
|
|
# Build image start #
|
|
#####################
|
|
|
|
FROM debian:9.4-slim as BUILDER_IMAGE
|
|
|
|
ARG APT_PROXY
|
|
# 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 apt-get update && apt-get install make python-dev python-pip -y
|
|
|
|
RUN pip install -r requirements/build.txt
|
|
|
|
ENV LC_ALL C.UTF-8
|
|
|
|
RUN touch docker/Makefile
|
|
|
|
RUN make wheel
|
|
|
|
RUN chmod 777 dist -R
|
|
|
|
#####################
|
|
# Final image start #
|
|
#####################
|
|
|
|
FROM BASE_IMAGE
|
|
|
|
RUN mkdir -p /opt
|
|
|
|
RUN python /usr/lib/python2.7/dist-packages/virtualenv.py $PROJECT_INSTALL_DIR
|
|
|
|
WORKDIR $PROJECT_INSTALL_DIR
|
|
|
|
COPY --from=BUILDER_IMAGE /code/dist/*.whl .
|
|
|
|
COPY --from=BUILDER_IMAGE /code/contrib/scripts/docker/run-tests.sh .
|
|
|
|
COPY --from=BUILDER_IMAGE /code/requirements/testing-base.txt requirements-testing.txt
|
|
|
|
COPY --from=BUILDER_IMAGE /code/docker/version .
|
|
|
|
# Fix ownership
|
|
RUN chown -R mayan:mayan $PROJECT_INSTALL_DIR
|
|
|
|
# Install build Mayan EDMS
|
|
RUN sudo -u mayan $PYTHON_PIP install --no-cache-dir --no-use-pep517 *.whl && \
|
|
rm *.whl
|
|
|
|
# Install Python clients for librabbitmq, MySQL, PostgreSQL, REDIS
|
|
RUN sudo -u mayan $PYTHON_PIP install --no-cache-dir --no-use-pep517 librabbitmq==1.6.1 mysql-python==1.2.5 psycopg2==2.7.3.2 redis==2.10.6
|
|
|
|
# Setup supervisor
|
|
COPY docker/etc/supervisor/mayan.conf /etc/supervisor/conf.d
|
|
|
|
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"]
|
|
|
|
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;
|