1
0
mirror of https://github.com/ONLYOFFICE/Docker-Docs.git synced 2025-04-18 15:04:02 +03:00

Images slimming (#7)

* Fix ds-base & ds-service images

* Fix user

* Fix ds-base

* Slim converter

* Slim spellchecker

* Fix user (2)

* Fix converter

* Executable scripts

* Fix formatting

* Slim proxy

* Fix proxy

* Fix proxy (2)

* Fix proxy (3)

* Fix user (3)

* Clean logs

* Fix ds-service

* Fix user (4)

* Fix permissions

* Fix proxy fonts

* Slim docservice

* Remove dupes

* Slim ds-service

* Remove ds-service volume

* Fix ds-service

* Fix fonts
This commit is contained in:
Semyon Bezrukov 2020-05-27 13:46:53 +03:00 committed by GitHub
parent 53a7dd3be1
commit ed537ff034
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 142 additions and 73 deletions

View File

@ -3,106 +3,175 @@ FROM centos:7 AS ds-base
LABEL maintainer Ascensio System SIA <support@onlyoffice.com>
ARG COMPANY_NAME=onlyoffice
ARG PRODUCT_URL=http://download.onlyoffice.com/install/documentserver/linux/onlyoffice-documentserver-ie.x86_64.rpm
ENV COMPANY_NAME=$COMPANY_NAME
RUN yum -y install \
epel-release \
curl \
sudo && \
yum -y updateinfo && \
groupadd --system --gid 101 ds && \
ENV COMPANY_NAME=$COMPANY_NAME \
NODE_ENV=production-linux \
NODE_CONFIG_DIR=/etc/$COMPANY_NAME/documentserver
RUN groupadd --system --gid 101 ds && \
useradd --system -g ds --no-create-home --shell /sbin/nologin --uid 101 ds && \
yum -y install \
gettext \
$PRODUCT_URL \
nc && \
rm -f /var/log/*log
FROM ds-base AS ds-service
ARG PRODUCT_URL=http://download.onlyoffice.com/install/documentserver/linux/onlyoffice-documentserver-ie.x86_64.rpm
RUN useradd --no-create-home --shell /sbin/nologin nginx && \
rpm -ivh $PRODUCT_URL --noscripts --nodeps && \
chmod a+r /etc/$COMPANY_NAME/documentserver*/*.json && \
chmod a+r /etc/$COMPANY_NAME/documentserver/log4js/*.json && \
sed 's,\(listen.\+:\)\([0-9]\+\)\(.*;\),'"\18888\3"',' \
-i /etc/nginx/conf.d/ds.conf && \
sed '/error_log.*/d' -i /etc/nginx/includes/ds-common.conf && \
chmod 755 /var/log/nginx && \
ln -sf /dev/stderr /var/log/nginx/error.log && \
yum clean all && \
rm -rf /var/tmp/yum-*
COPY config/nginx/nginx.conf /etc/nginx/nginx.conf
COPY config/nginx/includes/http-common.conf /etc/nginx/includes/http-common.conf
COPY config/nginx/includes/http-upstream.conf /etc/nginx/includes/http-upstream.conf
COPY fonts/* /var/www/$COMPANY_NAME/documentserver/core-fonts/custom/
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod a+x /usr/local/bin/*.sh && \
chown -R ds:ds /var/www/$COMPANY_NAME/documentserver/core-fonts/custom && \
mkdir -p \
/var/lib/$COMPANY_NAME/documentserver/App_Data/cache/files \
/var/lib/$COMPANY_NAME/documentserver/App_Data/docbuilder && \
documentserver-generate-allfonts.sh true
VOLUME /var/lib/$COMPANY_NAME
USER 101
chmod a+r /etc/$COMPANY_NAME/documentserver/log4js/*.json
COPY --chown=ds:ds \
fonts/* \
/var/www/$COMPANY_NAME/documentserver/core-fonts/custom/
RUN documentserver-generate-allfonts.sh true
FROM ds-base AS proxy
ENV DOCSERVICE_HOST_PORT=localhost:8000 \
SPELLCHECKER_HOST_PORT=localhost:8080 \
EXAMPLE_HOST_PORT=localhost:3000
EXPOSE 8888
RUN yum -y install epel-release sudo && \
yum -y updateinfo && \
yum -y install gettext nginx && \
yum clean all && \
rm -f /var/log/*log
COPY config/nginx/nginx.conf /etc/nginx/nginx.conf
COPY --from=ds-service \
/etc/onlyoffice/documentserver/nginx/ds.conf \
/etc/nginx/conf.d/
COPY --from=ds-service \
/etc/onlyoffice/documentserver/nginx/includes/ds-common.conf \
/etc/onlyoffice/documentserver/nginx/includes/ds-docservice.conf \
/etc/onlyoffice/documentserver-example/nginx/includes/ds-example.conf \
/etc/onlyoffice/documentserver/nginx/includes/ds-spellchecker.conf \
/etc/nginx/includes/
COPY \
config/nginx/includes/http-common.conf \
config/nginx/includes/http-upstream.conf \
/etc/nginx/includes/
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver/core-fonts \
/var/www/$COMPANY_NAME/documentserver/core-fonts
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver/fonts \
/var/www/$COMPANY_NAME/documentserver/fonts
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver/sdkjs \
/var/www/$COMPANY_NAME/documentserver/sdkjs
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver/sdkjs-plugins \
/var/www/$COMPANY_NAME/documentserver/sdkjs-plugins
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver/web-apps \
/var/www/$COMPANY_NAME/documentserver/web-apps
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver-example/welcome \
/var/www/$COMPANY_NAME/documentserver-example/welcome
RUN sed 's,\(listen.\+:\)\([0-9]\+\)\(.*;\),'"\18888\3"',' \
-i /etc/nginx/conf.d/ds.conf && \
sed '/error_log.*/d' -i /etc/nginx/includes/ds-common.conf && \
chmod 755 /var/log/nginx && \
ln -sf /dev/stderr /var/log/nginx/error.log && \
mkdir -p \
/var/lib/$COMPANY_NAME/documentserver/App_Data/cache/files \
/var/lib/$COMPANY_NAME/documentserver/App_Data/docbuilder && \
chown -R ds:ds /var/lib/$COMPANY_NAME/documentserver
VOLUME /var/lib/$COMPANY_NAME
USER ds
ENTRYPOINT envsubst < /etc/nginx/includes/http-upstream.conf > /tmp/http-upstream.conf && exec nginx -g 'daemon off;'
FROM ds-base as ds-service
ENV NODE_ENV=production-linux \
NODE_CONFIG_DIR=/etc/$COMPANY_NAME/documentserver
FROM ds-service AS docservice
FROM ds-base AS docservice
EXPOSE 8000
COPY --from=ds-service \
/etc/$COMPANY_NAME/documentserver/default.json \
/etc/$COMPANY_NAME/documentserver/production-linux.json \
/etc/$COMPANY_NAME/documentserver/
COPY --from=ds-service \
/etc/$COMPANY_NAME/documentserver/log4js/production.json \
/etc/$COMPANY_NAME/documentserver/log4js/
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver/sdkjs-plugins \
/var/www/$COMPANY_NAME/documentserver/sdkjs-plugins
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver/server/DocService \
/var/www/$COMPANY_NAME/documentserver/server/DocService
COPY docker-entrypoint.sh /usr/local/bin/
USER ds
ENTRYPOINT docker-entrypoint.sh /var/www/$COMPANY_NAME/documentserver/server/DocService/docservice
FROM ds-service AS converter
FROM ds-base AS converter
COPY --from=ds-service \
/etc/$COMPANY_NAME/documentserver/default.json \
/etc/$COMPANY_NAME/documentserver/production-linux.json \
/etc/$COMPANY_NAME/documentserver/
COPY --from=ds-service \
/etc/$COMPANY_NAME/documentserver/log4js/production.json \
/etc/$COMPANY_NAME/documentserver/log4js/
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver/core-fonts \
/var/www/$COMPANY_NAME/documentserver/core-fonts
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver/fonts \
/var/www/$COMPANY_NAME/documentserver/fonts
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver/sdkjs \
/var/www/$COMPANY_NAME/documentserver/sdkjs
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver/server/FileConverter \
/var/www/$COMPANY_NAME/documentserver/server/FileConverter
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver/web-apps \
/var/www/$COMPANY_NAME/documentserver/web-apps
COPY --from=ds-service \
/usr/lib64/libgraphics.so \
/usr/lib64/libdoctrenderer.so \
/usr/lib64/libkernel.so \
/usr/lib64/libicudata.so.58 \
/usr/lib64/libicuuc.so.58 \
/usr/lib64/libDjVuFile.so \
/usr/lib64/libPdfReader.so \
/usr/lib64/libPdfWriter.so \
/usr/lib64/libHtmlFile.so \
/usr/lib64/libHtmlRenderer.so \
/usr/lib64/libUnicodeConverter.so \
/usr/lib64/libXpsFile.so \
/usr/lib64/
COPY docker-entrypoint.sh /usr/local/bin/
USER ds
ENTRYPOINT docker-entrypoint.sh /var/www/$COMPANY_NAME/documentserver/server/FileConverter/converter
FROM centos:7 AS spellchecker
LABEL maintainer Ascensio System SIA <support@onlyoffice.com>
ARG COMPANY_NAME=onlyoffice
ENV COMPANY_NAME=$COMPANY_NAME \
NODE_ENV=production-linux \
NODE_CONFIG_DIR=/etc/$COMPANY_NAME/documentserver
RUN groupadd --system --gid 101 ds && \
useradd --system -g ds --no-create-home --shell /sbin/nologin --uid 101 ds
FROM ds-base AS spellchecker
EXPOSE 8080
COPY --from=ds-base /etc/$COMPANY_NAME/documentserver/log4js /etc/$COMPANY_NAME/documentserver/log4js
COPY --from=ds-base /etc/$COMPANY_NAME/documentserver/*.json /etc/$COMPANY_NAME/documentserver/
COPY --from=ds-base /var/www/$COMPANY_NAME/documentserver/server/SpellChecker /var/www/$COMPANY_NAME/documentserver/server/SpellChecker
COPY --from=ds-service \
/etc/$COMPANY_NAME/documentserver/default.json \
/etc/$COMPANY_NAME/documentserver/production-linux.json \
/etc/$COMPANY_NAME/documentserver/
COPY --from=ds-service \
/etc/$COMPANY_NAME/documentserver/log4js/production.json \
/etc/$COMPANY_NAME/documentserver/log4js/
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver/server/SpellChecker \
/var/www/$COMPANY_NAME/documentserver/server/SpellChecker
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod a+x /usr/local/bin/docker-entrypoint.sh
USER 101
USER ds
ENTRYPOINT docker-entrypoint.sh /var/www/$COMPANY_NAME/documentserver/server/SpellChecker/spellchecker
FROM statsd/statsd AS metrics
ARG COMPANY_NAME=onlyoffice
COPY --from=ds-base /var/www/$COMPANY_NAME/documentserver/server/Metrics/config/config.js /usr/src/app/config.js
COPY --from=ds-service /var/www/$COMPANY_NAME/documentserver/server/Metrics/config/config.js /usr/src/app/config.js
FROM centos:7 AS example
LABEL maintainer Ascensio System SIA <support@onlyoffice.com>
ARG COMPANY_NAME=onlyoffice
ENV COMPANY_NAME=$COMPANY_NAME \
NODE_ENV=production-linux \
NODE_CONFIG_DIR=/etc/$COMPANY_NAME/documentserver-example
RUN groupadd --system --gid 101 ds && \
useradd --system -g ds --no-create-home --shell /sbin/nologin --uid 101 ds
FROM ds-base AS example
ENV NODE_CONFIG_DIR=/etc/$COMPANY_NAME/documentserver-example
EXPOSE 8000
COPY --from=ds-base /etc/$COMPANY_NAME/documentserver-example /etc/$COMPANY_NAME/documentserver-example
COPY --from=ds-base /var/www/$COMPANY_NAME/documentserver-example /var/www/$COMPANY_NAME/documentserver-example
COPY --from=ds-service \
/etc/$COMPANY_NAME/documentserver-example \
/etc/$COMPANY_NAME/documentserver-example
COPY --from=ds-service \
/var/www/$COMPANY_NAME/documentserver-example \
/var/www/$COMPANY_NAME/documentserver-example
COPY example-docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN chmod a+x /usr/local/bin/docker-entrypoint.sh && \
mkdir -p /var/lib/$COMPANY_NAME/documentserver-example/files && \
RUN mkdir -p /var/lib/$COMPANY_NAME/documentserver-example/files && \
chown -R ds:ds /var/lib/$COMPANY_NAME/documentserver-example/files
VOLUME /var/lib/$COMPANY_NAME/documentserver-example/files
USER 101
USER ds
ENTRYPOINT docker-entrypoint.sh /var/www/$COMPANY_NAME/documentserver-example/example
FROM postgres:9.5 AS db
ARG COMPANY_NAME=onlyoffice
COPY --from=ds-base /var/www/$COMPANY_NAME/documentserver/server/schema/postgresql/createdb.sql /docker-entrypoint-initdb.d/
COPY --from=ds-service /var/www/$COMPANY_NAME/documentserver/server/schema/postgresql/createdb.sql /docker-entrypoint-initdb.d/

0
docker-entrypoint.sh Normal file → Executable file
View File

0
example-docker-entrypoint.sh Normal file → Executable file
View File