125 lines
6.3 KiB
Docker
125 lines
6.3 KiB
Docker
FROM ubuntu:22.04
|
|
|
|
ARG RELEASE_DATE="2016-06-21"
|
|
ARG RELEASE_DATE_SIGN=""
|
|
ARG VERSION="8.9.0.190"
|
|
ARG SOURCE_REPO_URL="deb [signed-by=/usr/share/keyrings/onlyoffice.gpg] https://download.onlyoffice.com/repo/debian squeeze main"
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
ARG PACKAGE_SYSNAME="onlyoffice"
|
|
|
|
ARG ELK_DIR=/usr/share/elasticsearch
|
|
ARG ELK_INDEX_DIR=/var/www/${PACKAGE_SYSNAME}/Data/Index
|
|
ARG ELK_LOG_DIR=/var/log/${PACKAGE_SYSNAME}/Index
|
|
ARG ELK_LIB_DIR=${ELK_DIR}/lib
|
|
ARG ELK_MODULE_DIR=${ELK_DIR}/modules
|
|
|
|
LABEL ${PACKAGE_SYSNAME}.community.release-date="${RELEASE_DATE}" \
|
|
${PACKAGE_SYSNAME}.community.version="${VERSION}" \
|
|
description="Community Server is a free open-source collaborative system developed to manage documents, projects, customer relationship and emails, all in one place." \
|
|
maintainer="Ascensio System SIA <support@${PACKAGE_SYSNAME}.com>" \
|
|
securitytxt="https://www.${PACKAGE_SYSNAME}.com/.well-known/security.txt"
|
|
|
|
ENV LANG=en_US.UTF-8 \
|
|
LANGUAGE=en_US:en \
|
|
LC_ALL=en_US.UTF-8 \
|
|
ELASTICSEARCH_VERSION=7.16.3
|
|
|
|
RUN apt-get -y update && \
|
|
apt-get -y upgrade && \
|
|
apt-get -y dist-upgrade && \
|
|
addgroup --system --gid 107 ${PACKAGE_SYSNAME} && \
|
|
adduser -uid 104 --quiet --home /var/www/${PACKAGE_SYSNAME} --system --gid 107 ${PACKAGE_SYSNAME} && \
|
|
addgroup --system --gid 104 elasticsearch && \
|
|
adduser -uid 103 --quiet --home /nonexistent --system --gid 104 elasticsearch && \
|
|
apt-get -yq install systemd \
|
|
systemd-sysv \
|
|
locales \
|
|
software-properties-common \
|
|
curl \
|
|
wget \
|
|
sudo && \
|
|
cd /lib/systemd/system/sysinit.target.wants/ && ls | grep -v systemd-tmpfiles-setup | xargs rm -f $1 && \
|
|
rm -f /lib/systemd/system/multi-user.target.wants/* \
|
|
/etc/systemd/system/*.wants/* \
|
|
/lib/systemd/system/local-fs.target.wants/* \
|
|
/lib/systemd/system/sockets.target.wants/*udev* \
|
|
/lib/systemd/system/sockets.target.wants/*initctl* \
|
|
/lib/systemd/system/basic.target.wants/* \
|
|
/lib/systemd/system/anaconda.target.wants/* \
|
|
/lib/systemd/system/plymouth* \
|
|
/lib/systemd/system/systemd-update-utmp* && \
|
|
locale-gen en_US.UTF-8 && \
|
|
echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \
|
|
echo "${SOURCE_REPO_URL}" >> /etc/apt/sources.list && \
|
|
echo "deb [signed-by=/usr/share/keyrings/xamarin.gpg] https://download.mono-project.com/repo/ubuntu stable-focal/snapshots/6.8.0.123 main" | tee /etc/apt/sources.list.d/mono-official.list && \
|
|
echo "deb [signed-by=/usr/share/keyrings/mono-extra.gpg] https://d2nlctn12v279m.cloudfront.net/repo/mono/ubuntu focal main" | tee /etc/apt/sources.list.d/mono-extra.list && \
|
|
curl -fsSL https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/onlyoffice.gpg --import && \
|
|
chmod 644 /usr/share/keyrings/onlyoffice.gpg && \
|
|
curl -fsSL https://download.mono-project.com/repo/xamarin.gpg | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/xamarin.gpg --import && \
|
|
chmod 644 /usr/share/keyrings/xamarin.gpg && \
|
|
curl -fsSL https://d2nlctn12v279m.cloudfront.net/repo/mono/mono.key | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/mono-extra.gpg --import && \
|
|
chmod 644 /usr/share/keyrings/mono-extra.gpg && \
|
|
wget http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.27-3ubuntu1_amd64.deb && \
|
|
apt-get install ./multiarch-support_2.27-3ubuntu1_amd64.deb && \
|
|
rm -f ./multiarch-support_2.27-3ubuntu1_amd64.deb && \
|
|
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add - && \
|
|
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list && \
|
|
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && \
|
|
sudo dpkg -i packages-microsoft-prod.deb && \
|
|
rm packages-microsoft-prod.deb && \
|
|
printf "Package: * \nPin: origin \"packages.microsoft.com\"\nPin-Priority: 1001" > /etc/apt/preferences && \
|
|
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash - && \
|
|
apt-get install -yq gnupg2 \
|
|
ca-certificates \
|
|
software-properties-common \
|
|
cron \
|
|
rsyslog \
|
|
ruby-dev \
|
|
ruby-god \
|
|
nodejs \
|
|
nginx \
|
|
gdb \
|
|
mono-complete \
|
|
ca-certificates-mono \
|
|
python3-certbot-nginx \
|
|
htop \
|
|
nano \
|
|
dnsutils \
|
|
redis-server \
|
|
python3-pip \
|
|
multiarch-support \
|
|
iproute2 \
|
|
ffmpeg \
|
|
jq \
|
|
apt-transport-https \
|
|
elasticsearch=${ELASTICSEARCH_VERSION} && \
|
|
mkdir -p ${ELK_INDEX_DIR}/v${ELASTICSEARCH_VERSION} && \
|
|
mkdir -p ${ELK_LOG_DIR} && \
|
|
chmod -R u=rwx /var/www/${PACKAGE_SYSNAME} && \
|
|
chmod -R g=rx /var/www/${PACKAGE_SYSNAME} && \
|
|
chmod -R o=rx /var/www/${PACKAGE_SYSNAME} && \
|
|
chown -R elasticsearch:elasticsearch ${ELK_INDEX_DIR}/v${ELASTICSEARCH_VERSION} && \
|
|
chown -R elasticsearch:elasticsearch ${ELK_LOG_DIR} && \
|
|
chmod -R u=rwx ${ELK_INDEX_DIR}/v${ELASTICSEARCH_VERSION} && \
|
|
chmod -R g=rs ${ELK_INDEX_DIR}/v${ELASTICSEARCH_VERSION} && \
|
|
chmod -R o= ${ELK_INDEX_DIR}/v${ELASTICSEARCH_VERSION} && \
|
|
apt-get install -yq \
|
|
mono-webserver-hyperfastcgi=0.4-8 \
|
|
dotnet-sdk-7.0 \
|
|
${PACKAGE_SYSNAME}-communityserver \
|
|
${PACKAGE_SYSNAME}-xmppserver && \
|
|
apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
COPY config /app/config/
|
|
COPY assets /app/assets/
|
|
COPY run-community-server.sh /app/run-community-server.sh
|
|
|
|
RUN chmod -R 755 /app/*.sh
|
|
|
|
VOLUME ["/sys/fs/cgroup","/var/log/${PACKAGE_SYSNAME}", "/var/www/${PACKAGE_SYSNAME}/Data", "/var/lib/mysql", "/etc/letsencrypt"]
|
|
|
|
EXPOSE 80 443 5222 3306 9865 9888 9866 9871 9882 5280
|
|
|
|
CMD ["/app/run-community-server.sh"];
|