Merge branch 'develop' of github.com:ONLYOFFICE/AppServer into develop

This commit is contained in:
Ilya Oleshko 2021-04-16 13:50:00 +03:00
commit e25407a56f
9 changed files with 376 additions and 195 deletions

View File

@ -1,26 +1,35 @@
#!/bin/bash
SRC_PATH="/AppServer"
ARGS=""
while [ "$1" != "" ]; do
case $1 in
-sp | --srcpath )
if [ "$2" != "" ]; then
SRC_PATH=$2
shift
fi
SRC_PATH=$2
shift
fi
;;
-ar | --arguments )
if [ "$2" != "" ]; then
ARGS=$2
shift
fi
;;
-? | -h | --help )
echo " Usage: bash build-backend.sh [PARAMETER] [[PARAMETER], ...]"
echo " Parameters:"
echo " -sp, --srcpath path to AppServer root directory"
echo " -ar, --arguments additional arguments publish the .NET runtime with your application"
echo " -?, -h, --help this help"
echo " Examples"
echo " bash build-backend.sh -sp /app/AppServer"
exit 0
;;
;;
* )
echo "Unknown parameter $1" 1>&2
@ -33,8 +42,8 @@ done
echo "== BACK-END-BUILD =="
cd ${SRC_PATH}
dotnet restore ASC.Web.sln --configfile .nuget/NuGet.Config
dotnet build -r linux-x64 ASC.Web.sln
dotnet restore ASC.Web.sln --configfile .nuget/NuGet.Config ${ARGS}
dotnet build ASC.Web.sln ${ARGS}
echo "== Build ASC.Thumbnails =="
yarn install --cwd common/ASC.Thumbnails --frozen-lockfile

View File

@ -20,7 +20,7 @@ while [ "$1" != "" ]; do
echo " Examples"
echo " bash build-backend.sh -sp /app/AppServer"
exit 0
;;
;;
* )
echo "Unknown parameter $1" 1>&2
@ -34,3 +34,4 @@ echo "== FRONT-END-BUILD =="
cd ${SRC_PATH}
yarn install
yarn build

View File

@ -2,7 +2,6 @@
SRC_PATH="/AppServer"
BUILD_PATH="/publish"
RID_ID="linux-x64"
SELF_CONTAINED="false"
ARGS=""
@ -22,12 +21,6 @@ while [ "$1" != "" ]; do
BUILD_PATH=$2
shift
fi
;;
-ri | --runtime )
if [ "$2" != "" ]; then
RID_ID=$2
shift
fi
;;
-sc | --self-contained )
if [ "$2" != "" ]; then
@ -46,7 +39,6 @@ while [ "$1" != "" ]; do
echo " Parameters:"
echo " -sp, --srcpath path to AppServer root directory (by default=/AppServer)"
echo " -bp, --buildpath path where generated output is placed (by default=/publish)"
echo " -ri, --runtime RID ids for .NET runtime publish (by default=linux-x64)"
echo " -sc, --self-contained publish the .NET runtime with your application (by default=false)"
echo " -ar, --arguments additional arguments publish the .NET runtime with your application"
echo " -?, -h, --help this help"
@ -74,7 +66,7 @@ for i in ${!servers_products_name_backend[@]}; do
echo "== Publish ${servers_products_name_backend[$i]}.csproj project =="
SERVICE_DIR="$(dirname "$(find ${SRC_PATH} -type f -name "${servers_products_name_backend[$i]}".csproj)")"
cd ${SERVICE_DIR}
dotnet publish -c Release -r ${RID_ID} --self-contained ${SELF_CONTAINED} ${ARGS} -o ${BUILD_PATH}/products/${servers_products_name_backend[$i]}/server/
dotnet publish -c Release --self-contained ${SELF_CONTAINED} ${ARGS} -o ${BUILD_PATH}/products/${servers_products_name_backend[$i]}/server/
done
# Array of names backend services
@ -97,7 +89,7 @@ for i in ${!services_name_backend[@]}; do
echo "== Publish ${services_name_backend[$i]}.csproj project =="
SERVICE_DIR="$(dirname "$(find ${SRC_PATH} -type f -name "${services_name_backend[$i]}".csproj)")"
cd ${SERVICE_DIR}
dotnet publish -c Release -r ${RID_ID} --self-contained ${SELF_CONTAINED} ${ARGS} -o ${BUILD_PATH}/services/${services_name_backend[$i]}/service/
dotnet publish -c Release --self-contained ${SELF_CONTAINED} ${ARGS} -o ${BUILD_PATH}/services/${services_name_backend[$i]}/service/
done
# Array of names backend services in directory common (Nodejs)

View File

@ -1,11 +1,13 @@
### STAGE 1: Develop ######
ARG SRC_PATH="/app/onlyoffice/src"
ARG BUILD_PATH="/var/www"
### STAGE 1: Base image ######
ARG SRC_PATH=/app/onlyoffice/src
ARG BUILD_PATH=/var/www
ARG REPO_TAG=5.0.202-focal-amd64
ARG REPO=mcr.microsoft.com/dotnet/sdk
FROM ubuntu:20.10 AS develop
FROM $REPO:$REPO_TAG AS base
ARG RELEASE_DATE="2016-06-21"
ARG DEBIAN_FRONTEND=noninteractive
ARG GIT_BRANCH="master"
ARG GIT_BRANCH=master
ARG SRC_PATH
ARG BUILD_PATH
@ -25,22 +27,8 @@ RUN echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null && \
adduser -uid 104 --quiet --home /var/www/onlyoffice --system --gid 107 onlyoffice && \
locale-gen en_US.UTF-8 && \
apt-get -y update && \
apt-get install -yq software-properties-common wget curl && \
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - && \
apt-get install -y nodejs && \
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list && \
wget https://packages.microsoft.com/config/ubuntu/20.10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && \
dpkg -i packages-microsoft-prod.deb && \
apt-get -y update && \
apt-get install -y apt-transport-https && \
apt-get install -y apt-utils &&\
apt-get -y update && \
cd ~ && \
echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \
apt-get install -yq git \
yarn \
dotnet-sdk-5.0
apt-get install -yq git apt-utils npm nodejs && \
npm install --global yarn
RUN echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null && \
echo ${GIT_BRANCH} && \
@ -55,8 +43,7 @@ RUN echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null && \
sed -e 's/#//' -i /etc/nginx/conf.d/onlyoffice.conf && \
cd ${SRC_PATH}/build/install/common/ && \
bash build-frontend.sh -sp ${SRC_PATH} && \
cd ${SRC_PATH} && yarn build && cd ${SRC_PATH}/build/install/common/ && \
bash build-backend.sh -sp ${SRC_PATH} && \
bash build-backend.sh -sp ${SRC_PATH} -ar "--disable-parallel" && \
bash publish-backend.sh -sp ${SRC_PATH} -bp ${BUILD_PATH} -ar "--disable-parallel"
COPY config/mysql/conf.d/mysql.cnf /etc/mysql/conf.d/mysql.cnf
@ -71,7 +58,8 @@ FROM mcr.microsoft.com/dotnet/aspnet:5.0.4-focal-amd64 as builder
ARG BUILD_PATH
ENV BUILD_PATH=${BUILD_PATH}
COPY --from=develop /app/onlyoffice/config/ /app/onlyoffice/config/
COPY --from=base /app/onlyoffice/config/*.json /app/onlyoffice/config/
COPY --from=base /app/onlyoffice/config/*.config /app/onlyoffice/config/
# add defualt user and group for no-root run
RUN mkdir -p /var/log/onlyoffice && \
@ -96,7 +84,7 @@ ENTRYPOINT ["./docker-entrypoint.sh"]
### STAGE 3: Run ###
## NGINX ##
## Nginx image ##
FROM nginx AS web
ARG SRC_PATH
ARG BUILD_PATH
@ -109,16 +97,16 @@ RUN echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null && \
rm -rf /usr/share/nginx/html/*
# copy static services files and config values
COPY --from=develop /etc/nginx/conf.d /etc/nginx/conf.d
COPY --from=develop /etc/nginx/includes /etc/nginx/includes
COPY --from=develop /var/www/public /var/www/public
COPY --from=develop ${SRC_PATH}/products/ASC.CRM/Client/dist ${BUILD_PATH}/products/ASC.CRM/client
COPY --from=develop ${SRC_PATH}/web/ASC.Web.Editor/dist ${BUILD_PATH}/products/ASC.Files/editor
COPY --from=develop ${SRC_PATH}/products/ASC.Files/Client/dist ${BUILD_PATH}/products/ASC.Files/client
COPY --from=develop ${SRC_PATH}/web/ASC.Web.Login/dist ${BUILD_PATH}/studio/login
COPY --from=develop ${SRC_PATH}/products/ASC.People/Client/dist ${BUILD_PATH}/products/ASC.People/client
COPY --from=develop ${SRC_PATH}/products/ASC.Projects/Client/dist ${BUILD_PATH}/products/ASC.Projects/client
COPY --from=develop ${SRC_PATH}/web/ASC.Web.Client/dist ${BUILD_PATH}/studio/client
COPY --from=base /etc/nginx/conf.d /etc/nginx/conf.d
COPY --from=base /etc/nginx/includes /etc/nginx/includes
COPY --from=base /var/www/public /var/www/public
COPY --from=base ${SRC_PATH}/products/ASC.CRM/Client/dist ${BUILD_PATH}/products/ASC.CRM/client
COPY --from=base ${SRC_PATH}/web/ASC.Web.Editor/dist ${BUILD_PATH}/products/ASC.Files/editor
COPY --from=base ${SRC_PATH}/products/ASC.Files/Client/dist ${BUILD_PATH}/products/ASC.Files/client
COPY --from=base ${SRC_PATH}/web/ASC.Web.Login/dist ${BUILD_PATH}/studio/login
COPY --from=base ${SRC_PATH}/products/ASC.People/Client/dist ${BUILD_PATH}/products/ASC.People/client
COPY --from=base ${SRC_PATH}/products/ASC.Projects/Client/dist ${BUILD_PATH}/products/ASC.Projects/client
COPY --from=base ${SRC_PATH}/web/ASC.Web.Client/dist ${BUILD_PATH}/studio/client
COPY /config/nginx/templates/upstream.conf.template /etc/nginx/templates/upstream.conf.template
@ -145,7 +133,7 @@ FROM builder AS api_system
WORKDIR ${BUILD_PATH}/services/apisystem/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.ApiSystem/service .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.ApiSystem/service .
CMD ["ASC.ApiSystem.dll", "ASC.ApiSystem"]
@ -154,7 +142,7 @@ FROM builder AS backup
WORKDIR ${BUILD_PATH}/services/backup/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Data.Backup/service .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Data.Backup/service .
CMD ["ASC.Data.Backup.dll", "ASC.Data.Backup", "core:products:folder=/var/www/products/", "core:products:subfolder=server"]
@ -163,7 +151,7 @@ FROM builder AS crm
WORKDIR ${BUILD_PATH}/products/ASC.CRM/server/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/products/ASC.CRM/server/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/products/ASC.CRM/server/ .
CMD ["ASC.CRM.dll", "ASC.CRM"]
@ -172,7 +160,7 @@ FROM builder AS data_storage_encryption
WORKDIR ${BUILD_PATH}/services/storage.encryption/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Data.Storage.Encryption/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Data.Storage.Encryption/service/ .
CMD ["ASC.Data.Storage.Encryption.dll", "ASC.Data.Storage.Encryption"]
@ -181,7 +169,7 @@ FROM builder AS files
WORKDIR ${BUILD_PATH}/products/ASC.Files/server/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/products/ASC.Files/server/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/products/ASC.Files/server/ .
CMD ["ASC.Files.dll", "ASC.Files"]
@ -190,7 +178,7 @@ FROM builder AS files_services
WORKDIR ${BUILD_PATH}/products/ASC.Files/service/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Files.Service/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Files.Service/service/ .
CMD ["ASC.Files.Service.dll", "ASC.Files.Service", "core:products:folder=/var/www/products/", "core:products:subfolder=server"]
@ -199,7 +187,7 @@ FROM builder AS data_storage_migration
WORKDIR ${BUILD_PATH}/services/storage.migration/service/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Data.Storage.Migration/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Data.Storage.Migration/service/ .
CMD ["ASC.Data.Storage.Migration.dll", "ASC.Data.Storage.Migration"]
@ -208,7 +196,7 @@ FROM builder AS notify
WORKDIR ${BUILD_PATH}/services/notify/service
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Notify/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Notify/service/ .
CMD ["ASC.Notify.dll", "ASC.Notify", "core:products:folder=/var/www/products/", "core:products:subfolder=server"]
@ -217,7 +205,7 @@ FROM builder AS people_server
WORKDIR ${BUILD_PATH}/products/ASC.People/server/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/products/ASC.People/server/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/products/ASC.People/server/ .
CMD ["ASC.People.dll", "ASC.People"]
@ -226,7 +214,7 @@ FROM builder AS projects_server
WORKDIR ${BUILD_PATH}/products/ASC.Projects/server/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/products/ASC.Projects/server/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/products/ASC.Projects/server/ .
CMD ["ASC.Projects.dll", "ASC.Projects"]
@ -235,8 +223,8 @@ FROM builder AS socket
WORKDIR ${BUILD_PATH}/services/socket/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Socket.IO.Svc/service/ .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Socket.IO/service/ ${BUILD_PATH}/www/ASC.Socket.IO/
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Socket.IO.Svc/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Socket.IO/service/ ${BUILD_PATH}/www/ASC.Socket.IO/
CMD ["ASC.Socket.IO.Svc.dll", "ASC.Socket.IO.Svc"]
@ -245,7 +233,7 @@ FROM builder AS studio_notify
WORKDIR ${BUILD_PATH}/services/studio.notify/service/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Studio.Notify/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Studio.Notify/service/ .
CMD ["ASC.Studio.Notify.dll", "ASC.Studio.Notify", "core:products:folder=/var/www/products/", "core:products:subfolder=server"]
@ -254,7 +242,7 @@ FROM builder AS telegram_service
WORKDIR ${BUILD_PATH}/services/telegram/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.TelegramService/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.TelegramService/service/ .
CMD ["ASC.TelegramService.dll", "ASC.TelegramService"]
@ -263,8 +251,8 @@ FROM builder AS thumbnails
WORKDIR ${BUILD_PATH}/services/thumb/service/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Thumbnails.Svc/service/ .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Thumbnails/service/ /var/www/services/thumb/client
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Thumbnails.Svc/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Thumbnails/service/ /var/www/services/thumb/client
CMD ["ASC.Thumbnails.Svc.dll", "ASC.Thumbnails.Svc"]
@ -273,8 +261,8 @@ FROM builder AS urlshortener
WORKDIR ${BUILD_PATH}/services/urlshortener/service/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.UrlShortener.Svc/service/ .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.UrlShortener/service/ /var/www/services/urlshortener/client
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.UrlShortener.Svc/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.UrlShortener/service/ /var/www/services/urlshortener/client
CMD ["ASC.UrlShortener.Svc.dll", "ASC.UrlShortener.Svc"]
@ -283,7 +271,7 @@ FROM builder AS api
WORKDIR ${BUILD_PATH}/studio/api/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Web.Api/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Web.Api/service/ .
CMD ["ASC.Web.Api.dll", "ASC.Web.Api"]
@ -292,6 +280,6 @@ FROM builder AS studio
WORKDIR ${BUILD_PATH}/studio/server/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Web.Studio/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Web.Studio/service/ .
CMD ["ASC.Web.Studio.dll", "ASC.Web.Studio"]

View File

@ -1,11 +1,15 @@
### STAGE 1: Develop ######
FROM ubuntu:20.10 AS develop
### STAGE 1: Base image ######
ARG SRC_PATH=/app/onlyoffice/src
ARG BUILD_PATH=/var/www
ARG REPO_TAG=5.0.202-focal-amd64
ARG REPO=mcr.microsoft.com/dotnet/sdk
ARG RELEASE_DATE="2016-06-21"
ARG VERSION="8.9.0.190"
ARG DEBIAN_FRONTEND=noninteractive
ARG GIT_BRANCH="master"
ARG SRC_PATH="/app/onlyoffice/src"
FROM $REPO:$REPO_TAG AS base
ARG RELEASE_DATE=2021-04-11
ARG VERSION=8.9.0.190
ARG GIT_BRANCH=master
ARG SRC_PATH
ARG BUILD_PATH
LABEL onlyoffice.appserver.release-date="${RELEASE_DATE}" \
onlyoffice.appserver.version="${VERSION}" \
@ -24,22 +28,8 @@ RUN echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null && \
adduser -uid 104 --quiet --home /var/www/onlyoffice --system --gid 107 onlyoffice && \
locale-gen en_US.UTF-8 && \
apt-get -y update && \
apt-get install -yq software-properties-common wget curl && \
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - && \
apt-get install -y nodejs && \
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list && \
wget https://packages.microsoft.com/config/ubuntu/20.10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && \
dpkg -i packages-microsoft-prod.deb && \
apt-get -y update && \
apt-get install -y apt-transport-https && \
apt-get install -y apt-utils &&\
apt-get -y update && \
cd ~ && \
echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \
apt-get install -yq git \
yarn \
dotnet-sdk-5.0
apt-get install -yq git apt-utils npm nodejs && \
npm install --global yarn
RUN echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null && \
echo ${GIT_BRANCH} && \
@ -54,8 +44,7 @@ RUN echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null && \
sed -e 's/#//' -i /etc/nginx/conf.d/onlyoffice.conf && \
cd ${SRC_PATH}/build/install/common/ && \
bash build-frontend.sh -sp ${SRC_PATH} && \
cd ${SRC_PATH} && yarn build && cd ${SRC_PATH}/build/install/common/ && \
bash build-backend.sh -sp ${SRC_PATH} && \
bash build-backend.sh -sp ${SRC_PATH} -ar "--disable-parallel" && \
bash publish-backend.sh -sp ${SRC_PATH} -bp ${BUILD_PATH} -ar "--disable-parallel"
COPY config/mysql/conf.d/mysql.cnf /etc/mysql/conf.d/mysql.cnf
@ -69,7 +58,7 @@ RUN rm -rf /var/lib/apt/lists/*
FROM mcr.microsoft.com/dotnet/aspnet:5.0.4-focal-amd64 as builder
COPY --from=develop /app/onlyoffice/config/ /app/onlyoffice/config/
COPY --from=base /app/onlyoffice/config/ /app/onlyoffice/config/
# add defualt user and group for no-root run
RUN mkdir -p /var/log/onlyoffice && \
@ -107,16 +96,16 @@ RUN echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null && \
rm -rf /usr/share/nginx/html/*
# copy static services files and config values
COPY --from=develop /etc/nginx/conf.d /etc/nginx/conf.d
COPY --from=develop /etc/nginx/includes /etc/nginx/includes
COPY --from=develop /var/www/public /var/www/public
COPY --from=develop ${SRC_PATH}/products/ASC.CRM/Client/dist /var/www/products/ASC.CRM/client
COPY --from=develop ${SRC_PATH}/web/ASC.Web.Editor/dist /var/www/products/ASC.Files/editor
COPY --from=develop ${SRC_PATH}/products/ASC.Files/Client/dist /var/www/products/ASC.Files/client
COPY --from=develop ${SRC_PATH}/web/ASC.Web.Login/dist /var/www/studio/login
COPY --from=develop ${SRC_PATH}/products/ASC.People/Client/dist /var/www/products/ASC.People/client
COPY --from=develop ${SRC_PATH}/products/ASC.Projects/Client/dist /var/www/products/ASC.Projects/client
COPY --from=develop ${SRC_PATH}/web/ASC.Web.Client/dist /var/www/studio/client
COPY --from=base /etc/nginx/conf.d /etc/nginx/conf.d
COPY --from=base /etc/nginx/includes /etc/nginx/includes
COPY --from=base /var/www/public /var/www/public
COPY --from=base ${SRC_PATH}/products/ASC.CRM/Client/dist /var/www/products/ASC.CRM/client
COPY --from=base ${SRC_PATH}/web/ASC.Web.Editor/dist /var/www/products/ASC.Files/editor
COPY --from=base ${SRC_PATH}/products/ASC.Files/Client/dist /var/www/products/ASC.Files/client
COPY --from=base ${SRC_PATH}/web/ASC.Web.Login/dist /var/www/studio/login
COPY --from=base ${SRC_PATH}/products/ASC.People/Client/dist /var/www/products/ASC.People/client
COPY --from=base ${SRC_PATH}/products/ASC.Projects/Client/dist /var/www/products/ASC.Projects/client
COPY --from=base ${SRC_PATH}/web/ASC.Web.Client/dist /var/www/studio/client
COPY /config/nginx/templates/upstream.conf.template /etc/nginx/templates/upstream.conf.template
@ -144,7 +133,7 @@ FROM builder AS api_system
WORKDIR /var/www/services/apisystem/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/services/apisystem/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/services/apisystem/ .
CMD ["ASC.ApiSystem.dll", "ASC.ApiSystem"]
@ -154,11 +143,11 @@ FROM builder AS backup
WORKDIR /var/www/services/backup/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/services/backup/ .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/services/backup/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
CMD ["ASC.Data.Backup.dll", "ASC.Data.Backup", "core:products:folder=/var/www/products/", "core:products:subfolder=server"]
@ -168,11 +157,11 @@ FROM builder AS crm
WORKDIR /var/www/products/ASC.CRM/server/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
CMD ["ASC.CRM.dll", "ASC.CRM"]
@ -182,11 +171,11 @@ FROM builder AS data_storage_encryption
WORKDIR /var/www/services/storage.encryption/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/services/storage.encryption/ .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/services/storage.encryption/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
CMD ["ASC.Data.Storage.Encryption.dll", "ASC.Data.Storage.Encryption"]
@ -196,11 +185,11 @@ FROM builder AS files
WORKDIR /var/www/products/ASC.Files/server/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ .
COPY --from=develop --chown=onlyoffice:onlyoffice ${SRC_PATH}/ASC.Files/Server/DocStore .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${SRC_PATH}/ASC.Files/Server/DocStore .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
CMD ["ASC.Files.dll", "ASC.Files"]
@ -210,9 +199,9 @@ FROM builder AS files_services
WORKDIR /var/www/products/ASC.Files/service/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/service/ .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/Server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People*.dll /var/www/products/ASC.People/Server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/Server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People*.dll /var/www/products/ASC.People/Server/
CMD ["ASC.Files.Service.dll", "ASC.Files.Service", "core:products:folder=/var/www/products/", "core:products:subfolder=server"]
@ -222,11 +211,11 @@ FROM builder AS data_storage_migration
WORKDIR /var/www/services/storage.migration/service/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/services/storage.migration/ .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ /var/www/products/ASC.Files/Server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ /var/www/products/ASC.People/Server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ /var/www/products/ASC.CRM/Server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ /var/www/products/ASC.Projects/Server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/services/storage.migration/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ /var/www/products/ASC.Files/Server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ /var/www/products/ASC.People/Server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ /var/www/products/ASC.CRM/Server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ /var/www/products/ASC.Projects/Server/
CMD ["ASC.Data.Storage.Migration.dll", "ASC.Data.Storage.Migration"]
@ -237,11 +226,11 @@ FROM builder AS notify
WORKDIR /var/www/services/notify/service
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop /var/www/services/notify/ .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/Server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/Server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/Server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/Server/
COPY --from=base /var/www/services/notify/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/Server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/Server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/Server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/Server/
CMD ["ASC.Notify.dll", "ASC.Notify", "core:products:folder=/var/www/products/", "core:products:subfolder=server"]
@ -251,10 +240,10 @@ FROM builder AS people_server
WORKDIR /var/www/products/ASC.People/server/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
CMD ["ASC.People.dll", "ASC.People"]
@ -264,11 +253,11 @@ FROM builder AS projects_server
WORKDIR /var/www/products/ASC.Projects/server/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
CMD ["ASC.Projects.dll", "ASC.Projects"]
@ -278,12 +267,12 @@ FROM builder AS socket
WORKDIR /var/www/services/socket/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/services/socket/service/ .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/services/socket/client /var/www/ASC.Socket.IO
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ /var/www/products/ASC.Files/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ /var/www/products/ASC.People/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ /var/www/products/ASC.CRM/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ /var/www/products/ASC.Projects/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/services/socket/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/services/socket/client /var/www/ASC.Socket.IO
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ /var/www/products/ASC.Files/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ /var/www/products/ASC.People/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ /var/www/products/ASC.CRM/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ /var/www/products/ASC.Projects/server/
CMD ["ASC.Socket.IO.Svc.dll", "ASC.Socket.IO.Svc"]
@ -293,11 +282,11 @@ FROM builder AS studio_notify
WORKDIR /var/www/services/studio.notify/service/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop /var/www/services/studio.notify/ .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/Server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/Server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/Server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/Server/
COPY --from=base /var/www/services/studio.notify/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/Server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/Server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/Server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/Server/
CMD ["ASC.Studio.Notify.dll", "ASC.Studio.Notify", "core:products:folder=/var/www/products/", "core:products:subfolder=server"]
@ -307,11 +296,11 @@ FROM builder AS telegram_service
WORKDIR /var/www/services/telegram/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/services/telegram/service/ .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/services/telegram/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
CMD ["ASC.TelegramService.dll", "ASC.TelegramService"]
@ -321,8 +310,8 @@ FROM builder AS thumbnails
WORKDIR /var/www/services/thumb/service/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/services/thumb/service/ .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/services/thumb/client /var/www/services/thumb/client
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/services/thumb/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/services/thumb/client /var/www/services/thumb/client
CMD ["ASC.Thumbnails.Svc.dll", "ASC.Thumbnails.Svc"]
@ -332,8 +321,8 @@ FROM builder AS urlshortener
WORKDIR /var/www/services/urlshortener/service/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/services/urlshortener/service/ .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/services/urlshortener/client /var/www/services/urlshortener/client
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/services/urlshortener/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/services/urlshortener/client /var/www/services/urlshortener/client
CMD ["ASC.UrlShortener.Svc.dll", "ASC.UrlShortener.Svc"]
@ -343,11 +332,11 @@ FROM builder AS api
WORKDIR /var/www/studio/api/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/studio/api .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/studio/api .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
CMD ["ASC.Web.Api.dll", "ASC.Web.Api"]
@ -357,10 +346,10 @@ FROM builder AS studio
WORKDIR /var/www/studio/server/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.sh .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/studio/server/ .
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=develop --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/studio/server/ .
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Files/server/ASC.Files*.dll /var/www/products/ASC.Files/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.People/server/ASC.People.dll /var/www/products/ASC.People/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.CRM/server/ASC.CRM*.dll /var/www/products/ASC.CRM/server/
COPY --from=base --chown=onlyoffice:onlyoffice /var/www/products/ASC.Projects/server/ASC.Projects*.dll /var/www/products/ASC.Projects/server/
CMD ["ASC.Web.Studio.dll", "ASC.Web.Studio"]

View File

@ -120,11 +120,6 @@ services:
image: "${REPO}/${STATUS}appserver-storage-migration:${SRV_VERSION}"
container_name: ${STORAGE_MIGRATION_HOST}
onlyoffice-notify:
<<: *x-service-base
image: "${REPO}/${STATUS}appserver-notify:${SRV_VERSION}"
container_name: ${NOTIFY_HOST}
onlyoffice-people-server:
<<: *x-service-base
image: "${REPO}/${STATUS}appserver-people-server:${SRV_VERSION}"
@ -197,7 +192,6 @@ services:
- onlyoffice-files
- onlyoffice-files-services
- onlyoffice-storage-migration
- onlyoffice-notify
- onlyoffice-people-server
- onlyoffice-projects-server
- onlyoffice-socket

View File

@ -0,0 +1,49 @@
version: "3.6"
x-service:
&x-service-base
container_name: base
restart: always
expose:
- ${SERVICE_PORT}
environment:
MYSQL_HOST: ${MYSQL_HOST}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
APP_DOTNET_ENV: ${APP_DOTNET_ENV}
APP_CORE_BASE_DOMAIN: ${APP_CORE_BASE_DOMAIN}
APP_CORE_MACHINEKEY: ${APP_CORE_MACHINEKEY}
DOCUMENT_SERVER_JWT_SECRET: ${DOCUMENT_SERVER_JWT_SECRET}
DOCUMENT_SERVER_JWT_HEADER: ${DOCUMENT_SERVER_JWT_HEADER}
DOCUMENT_SERVER_URL_PUBLIC: ${DOCUMENT_SERVER_URL_PUBLIC}
DOCUMENT_SERVER_URL_INTERNAL: ${DOCUMENT_SERVER_URL_INTERNAL}
DOCUMENT_SERVER_URL_CONVERTER: ${DOCUMENT_SERVER_URL_CONVERTER}
KAFKA_HOST: ${KAFKA_HOST}
ELK_HOST: ${ELK_HOST}
PROXY_HOST: ${PROXY_HOST}
volumes:
#- /app/onlyoffice/CommunityServer/data:/app/onlyoffice/data
- app_data:/app/onlyoffice/data
- files_data:/var/www/products/ASC.Files/server/
- people_data:/var/www/products/ASC.People/server/
- crm_data:/var/www/products/ASC.CRM/server/
- project_data:/var/www/products/ASC.Projects/server/
services:
onlyoffice-notify:
<<: *x-service-base
image: "${REPO}/${STATUS}appserver-notify:${SRV_VERSION}"
container_name: ${NOTIFY_HOST}
networks:
default:
external:
name: ${NETWORK_NAME}
volumes:
app_data:
files_data:
people_data:
crm_data:
project_data:

View File

@ -8,6 +8,7 @@ using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Security;
using System.Threading;
using ASC.Api.Core;
using ASC.Common;
@ -83,8 +84,10 @@ namespace ASC.Employee.Core.Controllers
private EmployeeWraperFullHelper EmployeeWraperFullHelper { get; }
private EmployeeWraperHelper EmployeeWraperHelper { get; }
private UserFormatter UserFormatter { get; }
public PasswordHasher PasswordHasher { get; }
public ILog Log { get; }
private PasswordHasher PasswordHasher { get; }
private UserHelpTourHelper UserHelpTourHelper { get; }
private PersonalSettingsHelper PersonalSettingsHelper { get; }
private ILog Log { get; }
public PeopleController(
MessageService messageService,
@ -119,7 +122,9 @@ namespace ASC.Employee.Core.Controllers
EmployeeWraperFullHelper employeeWraperFullHelper,
EmployeeWraperHelper employeeWraperHelper,
UserFormatter userFormatter,
PasswordHasher passwordHasher)
PasswordHasher passwordHasher,
UserHelpTourHelper userHelpTourHelper,
PersonalSettingsHelper personalSettingsHelper)
{
Log = option.Get("ASC.Api");
Log.Debug("Test");
@ -155,6 +160,8 @@ namespace ASC.Employee.Core.Controllers
EmployeeWraperHelper = employeeWraperHelper;
UserFormatter = userFormatter;
PasswordHasher = passwordHasher;
UserHelpTourHelper = userHelpTourHelper;
PersonalSettingsHelper = personalSettingsHelper;
}
[Read("info")]
@ -451,7 +458,7 @@ namespace ASC.Employee.Core.Controllers
? true
: ("female".Equals(memberModel.Sex, StringComparison.OrdinalIgnoreCase) ? (bool?)false : null);
user.BirthDate = memberModel.Birthday != null && memberModel.Birthday != DateTime.MinValue ? TenantUtil.DateTimeFromUtc(Convert.ToDateTime(memberModel.Birthday)) : (DateTime?)null;
user.BirthDate = memberModel.Birthday != null && memberModel.Birthday != DateTime.MinValue ? TenantUtil.DateTimeFromUtc(Convert.ToDateTime(memberModel.Birthday)) : null;
user.WorkFromDate = memberModel.Worksfrom != null && memberModel.Worksfrom != DateTime.MinValue ? TenantUtil.DateTimeFromUtc(Convert.ToDateTime(memberModel.Worksfrom)) : DateTime.UtcNow.Date;
UpdateContacts(memberModel.Contacts, user);
@ -520,7 +527,7 @@ namespace ASC.Employee.Core.Controllers
? true
: ("female".Equals(memberModel.Sex, StringComparison.OrdinalIgnoreCase) ? (bool?)false : null);
user.BirthDate = memberModel.Birthday != null ? TenantUtil.DateTimeFromUtc(Convert.ToDateTime(memberModel.Birthday)) : (DateTime?)null;
user.BirthDate = memberModel.Birthday != null ? TenantUtil.DateTimeFromUtc(Convert.ToDateTime(memberModel.Birthday)) : null;
user.WorkFromDate = memberModel.Worksfrom != null ? TenantUtil.DateTimeFromUtc(Convert.ToDateTime(memberModel.Worksfrom)) : DateTime.UtcNow.Date;
UpdateContacts(memberModel.Contacts, user);
@ -665,7 +672,7 @@ namespace ASC.Employee.Core.Controllers
if (memberModel.Disable.HasValue)
{
user.Status = memberModel.Disable.Value ? EmployeeStatus.Terminated : EmployeeStatus.Active;
user.TerminatedDate = memberModel.Disable.Value ? DateTime.UtcNow : (DateTime?)null;
user.TerminatedDate = memberModel.Disable.Value ? DateTime.UtcNow : null;
}
if (self && !isAdmin)
@ -1515,6 +1522,147 @@ namespace ASC.Employee.Core.Controllers
MessageService.Send(MessageAction.UserUnlinkedSocialAccount, GetMeaningfulProviderName(provider));
}
[AllowAnonymous]
[Create("thirdparty/signup")]
public void SignupAccountFromBody([FromBody] LinkAccountModel model)
{
LinkAccount(model);
}
[AllowAnonymous]
[Update("thirdparty/linkaccount")]
[Consumes("application/x-www-form-urlencoded")]
public void SignupAccountFromForm([FromForm] LinkAccountModel model)
{
LinkAccount(model);
}
public void SignupAccount(SignupAccountModel model)
{
var employeeType = model.EmplType ?? EmployeeType.User;
var passwordHash = model.PasswordHash;
var mustChangePassword = false;
if (string.IsNullOrEmpty(passwordHash))
{
passwordHash = UserManagerWrapper.GeneratePassword();
mustChangePassword = true;
}
var thirdPartyProfile = new LoginProfile(Signature, InstanceCrypto, model.SerializedProfile);
var newUser = CreateNewUser(GetFirstName(model, thirdPartyProfile), GetLastName(model, thirdPartyProfile), GetEmailAddress(model, thirdPartyProfile), passwordHash, employeeType, false);
var messageAction = employeeType == EmployeeType.User ? MessageAction.UserCreatedViaInvite : MessageAction.GuestCreatedViaInvite;
MessageService.Send(MessageInitiator.System, messageAction, MessageTarget.Create(newUser.ID), newUser.DisplayUserName(false, DisplayUserSettingsHelper));
var userID = newUser.ID;
if (!string.IsNullOrEmpty(thirdPartyProfile.Avatar))
{
SaveContactImage(userID, thirdPartyProfile.Avatar);
}
GetLinker().AddLink(userID.ToString(), thirdPartyProfile);
var user = UserManager.GetUsers(userID);
var cookiesKey = SecurityContext.AuthenticateMe(user.Email, passwordHash);
CookiesManager.SetCookies(CookiesType.AuthKey, cookiesKey);
MessageService.Send(MessageAction.LoginSuccess);
StudioNotifyService.UserHasJoin();
if (mustChangePassword)
{
StudioNotifyService.UserPasswordChange(user);
}
UserHelpTourHelper.IsNewUser = true;
if (CoreBaseSettings.Personal)
PersonalSettingsHelper.IsNewUser = true;
}
protected string GetEmailAddress(SignupAccountModel model)
{
if (!string.IsNullOrEmpty(model.Email))
return model.Email.Trim();
return string.Empty;
}
private string GetEmailAddress(SignupAccountModel model, LoginProfile account)
{
var value = GetEmailAddress(model);
return string.IsNullOrEmpty(value) ? account.EMail : value;
}
protected string GetFirstName(SignupAccountModel model)
{
var value = string.Empty;
if (!string.IsNullOrEmpty(model.FirstName)) value = model.FirstName.Trim();
return HtmlUtil.GetText(value);
}
private string GetFirstName(SignupAccountModel model, LoginProfile account)
{
var value = GetFirstName(model);
return string.IsNullOrEmpty(value) ? account.FirstName : value;
}
protected string GetLastName(SignupAccountModel model)
{
var value = string.Empty;
if (!string.IsNullOrEmpty(model.LastName)) value = model.LastName.Trim();
return HtmlUtil.GetText(value);
}
private string GetLastName(SignupAccountModel model, LoginProfile account)
{
var value = GetLastName(model);
return string.IsNullOrEmpty(value) ? account.LastName : value;
}
private UserInfo CreateNewUser(string firstName, string lastName, string email, string passwordHash, EmployeeType employeeType, bool fromInviteLink)
{
var isVisitor = employeeType == EmployeeType.Visitor;
if (SetupInfo.IsSecretEmail(email))
{
fromInviteLink = false;
}
var userInfo = new UserInfo
{
FirstName = string.IsNullOrEmpty(firstName) ? UserControlsCommonResource.UnknownFirstName : firstName,
LastName = string.IsNullOrEmpty(lastName) ? UserControlsCommonResource.UnknownLastName : lastName,
Email = email,
};
if (CoreBaseSettings.Personal)
{
userInfo.ActivationStatus = EmployeeActivationStatus.Activated;
userInfo.CultureName = CoreBaseSettings.CustomMode ? "ru-RU" : Thread.CurrentThread.CurrentUICulture.Name;
}
return UserManagerWrapper.AddUser(userInfo, passwordHash, true, true, isVisitor, fromInviteLink);
}
private void SaveContactImage(Guid userID, string url)
{
using (var memstream = new MemoryStream())
{
var req = WebRequest.Create(url);
using (var response = req.GetResponse())
using (var stream = response.GetResponseStream())
{
var buffer = new byte[512];
int bytesRead;
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
memstream.Write(buffer, 0, bytesRead);
var bytes = memstream.ToArray();
UserPhotoManager.SaveOrUpdatePhoto(userID, bytes);
}
}
}
private AccountLinker GetLinker()
{
return AccountLinker.Get("webstudio");

View File

@ -1,7 +1,18 @@
namespace ASC.People.Models
using ASC.Core.Users;
namespace ASC.People.Models
{
public class LinkAccountModel
{
public string SerializedProfile{get;set;}
public string SerializedProfile { get; set; }
}
public class SignupAccountModel: LinkAccountModel
{
public EmployeeType? EmplType { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string PasswordHash { get; set; }
}
}