From dd21a1b290b06e6826ae041333715514afda5d82 Mon Sep 17 00:00:00 2001 From: Sergey Kirichenko Date: Tue, 13 Sep 2022 10:54:45 +0300 Subject: [PATCH] Add github action (#804) * Modified Dockerfile.app * Add github workflow * Modify GIT_BRANCH * Modify Dockerfile.app, change github repo * Add prefix for name services * Add login image build * Change nginx config loclahost to 127.0.0.1 * Del static login files from proxy image * Modify environmet for yml files * Fix build hooks * Add env STATUS for build hooks * For testinig dockerhub build * Fix * Branch for action feature/github-action-build-docker * Modify hooks * Modify hooks, develop branch for action * Add service-login to proxy * Action test amd64 * Action test amd64 * Git action build only amd64 * Github action from develop --- .github/workflows/4testing-multi-build.yml | 42 ++++++ build/install/docker/.env | 7 +- build/install/docker/Dockerfile.app | 126 ++++++++++-------- build/install/docker/appserver.yml | 44 +++--- build/install/docker/build.yml | 51 ++++--- .../nginx/templates/upstream.conf.template | 5 + build/install/docker/hooks/build | 1 + build/install/docker/hooks/push | 5 +- build/install/docker/migration-runner.yml | 2 +- build/install/docker/notify.yml | 2 +- 10 files changed, 182 insertions(+), 103 deletions(-) create mode 100644 .github/workflows/4testing-multi-build.yml diff --git a/.github/workflows/4testing-multi-build.yml b/.github/workflows/4testing-multi-build.yml new file mode 100644 index 0000000000..dcece9a67a --- /dev/null +++ b/.github/workflows/4testing-multi-build.yml @@ -0,0 +1,42 @@ +name: 4testing multiarch-build + +on: + push: + branches: [ "develop" ] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + platform: [linux/amd64] + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - + name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + - + name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Build 4testing + run: | + cd ./build/install/docker + REPO="onlyoffice" \ + DOCKER_IMAGE_PREFIX="4testing-docspace" \ + DOCKER_TAG="develop" \ + DOCKERFILE="Dockerfile.app" \ + docker buildx bake -f build.yml \ + --set *.args.GIT_BRANCH="develop" \ + --set *.platform=linux/amd64 \ + --push + shell: bash diff --git a/build/install/docker/.env b/build/install/docker/.env index 10f0cfe318..fa648c9fd1 100644 --- a/build/install/docker/.env +++ b/build/install/docker/.env @@ -2,12 +2,13 @@ PRODUCT=onlyoffice REPO=${PRODUCT} STATUS="" + DOCKER_IMAGE_PREFIX=${STATUS}docspace + DOCKER_TAG=latest + CONTAINER_PREFIX=${PRODUCT}- MYSQL_VERSION=8.0.18 ELK_VERSION=7.13.1 SERVICE_PORT=5050 - CONTAINER_PREFIX=${PRODUCT}- DOCUMENT_SERVER_IMAGE_NAME=onlyoffice/4testing-documentserver-ee:latest - DOCKER_TAG=latest DOCKERFILE=Dockerfile.app # zookeeper # @@ -69,6 +70,7 @@ MIGRATION_RUNNER_HOST=${CONTAINER_PREFIX}migration-runner PROXY_HOST=${CONTAINER_PREFIX}proxy DOCEDITOR_HOST=${CONTAINER_PREFIX}doceditor + LOGIN_HOST=${CONTAINER_PREFIX}login # proxy upstream environment # SERVICE_API_SYSTEM=${API_SYSTEM_HOST}:${SERVICE_PORT} @@ -91,5 +93,6 @@ SERVICE_STUDIO=${STUDIO_HOST}:${SERVICE_PORT} SERVICE_SSOAUTH=${SSOAUTH_HOST}:${SERVICE_PORT} SERVICE_DOCEDITOR=${DOCEDITOR_HOST}:5013 + SERVICE_LOGIN=${LOGIN_HOST}:5011 NETWORK_NAME=${PRODUCT} diff --git a/build/install/docker/Dockerfile.app b/build/install/docker/Dockerfile.app index 99305f3db2..40dd6ecbee 100644 --- a/build/install/docker/Dockerfile.app +++ b/build/install/docker/Dockerfile.app @@ -23,20 +23,19 @@ ENV LANG=en_US.UTF-8 \ LC_ALL=en_US.UTF-8 RUN apt-get -y update && \ - apt-get -y upgrade && \ - apt-get -y dist-upgrade && \ - apt-get install -yq sudo locales && \ - addgroup --system --gid 107 onlyoffice && \ - adduser -uid 104 --quiet --home /var/www/onlyoffice --system --gid 107 onlyoffice && \ + apt-get install -yq \ + sudo \ + locales \ + git \ + npm && \ locale-gen en_US.UTF-8 && \ - apt-get -y update && \ - apt-get install -yq git apt-utils npm && \ npm install --global yarn && \ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - && \ - apt-get install -y nodejs + apt-get install -y nodejs && \ + rm -rf /var/lib/apt/lists/* RUN echo ${GIT_BRANCH} && \ - git clone --recurse-submodules -b ${GIT_BRANCH} https://github.com/ONLYOFFICE/AppServer.git ${SRC_PATH} + git clone --depth 1 --recurse-submodules -b ${GIT_BRANCH} https://github.com/ONLYOFFICE/DocSpace.git ${SRC_PATH} RUN cd ${SRC_PATH} && \ # mkdir -p /app/onlyoffice/config/ && cp -rf config/* /app/onlyoffice/config/ && \ @@ -62,9 +61,7 @@ RUN cd ${SRC_PATH} && \ COPY config/mysql/conf.d/mysql.cnf /etc/mysql/conf.d/mysql.cnf -RUN rm -rf /var/lib/apt/lists/* - -FROM $DOTNET_RUN as builder +FROM $DOTNET_RUN as dotnetrun ARG BUILD_PATH ARG SRC_PATH ENV BUILD_PATH=${BUILD_PATH} @@ -79,10 +76,15 @@ RUN mkdir -p /var/log/onlyoffice && \ chown onlyoffice:onlyoffice /var/log -R && \ chown onlyoffice:onlyoffice /var/www -R && \ apt-get -y update && \ - apt-get -y upgrade && \ - apt-get install -yq sudo nano curl vim python3-pip && \ - apt-get install -yq libgdiplus && \ - pip3 install --upgrade jsonpath-ng multipledispatch + apt-get install -yq \ + sudo \ + nano \ + curl \ + vim \ + python3-pip \ + libgdiplus && \ + pip3 install --upgrade jsonpath-ng multipledispatch && \ + rm -rf /var/lib/apt/lists/* COPY --from=base --chown=onlyoffice:onlyoffice /app/onlyoffice/config/* /app/onlyoffice/config/ @@ -90,7 +92,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice /app/onlyoffice/config/* /app/onl EXPOSE 5050 ENTRYPOINT ["python3", "docker-entrypoint.py"] -FROM node:16.16-slim as nodeBuild +FROM node:16.16-slim as noderun ARG BUILD_PATH ARG SRC_PATH ENV BUILD_PATH=${BUILD_PATH} @@ -104,9 +106,14 @@ RUN mkdir -p /var/log/onlyoffice && \ chown onlyoffice:onlyoffice /var/log -R && \ chown onlyoffice:onlyoffice /var/www -R && \ apt-get -y update && \ - apt-get -y upgrade && \ - apt-get install -yq sudo nano curl vim python3-pip && \ - pip3 install --upgrade jsonpath-ng multipledispatch + apt-get install -yq \ + sudo \ + nano \ + curl \ + vim \ + python3-pip && \ + pip3 install --upgrade jsonpath-ng multipledispatch && \ + rm -rf /var/lib/apt/lists/* COPY --from=base --chown=onlyoffice:onlyoffice /app/onlyoffice/config/* /app/onlyoffice/config/ @@ -114,7 +121,7 @@ EXPOSE 5050 ENTRYPOINT ["python3", "docker-entrypoint.py"] ## Nginx image ## -FROM nginx AS web +FROM nginx AS proxy ARG SRC_PATH ARG BUILD_PATH ARG COUNT_WORKER_CONNECTIONS=1024 @@ -123,16 +130,14 @@ ENV DNS_NAMESERVER=127.0.0.11 \ MAP_HASH_BUCKET_SIZE="" RUN apt-get -y update && \ - apt-get -y upgrade && \ apt-get install -yq vim && \ - # Remove default nginx website + rm -rf /var/lib/apt/lists/* && \ rm -rf /usr/share/nginx/html/* # copy static services files and config values COPY --from=base /etc/nginx/conf.d /etc/nginx/conf.d COPY --from=base /etc/nginx/includes /etc/nginx/includes COPY --from=base ${SRC_PATH}/build/deploy/client ${BUILD_PATH}/client -COPY --from=base ${SRC_PATH}/build/deploy/login ${BUILD_PATH}/login COPY --from=base ${SRC_PATH}/build/deploy/public ${BUILD_PATH}/public COPY /config/nginx/templates/upstream.conf.template /etc/nginx/templates/upstream.conf.template COPY /config/nginx/templates/nginx.conf.template /etc/nginx/nginx.conf.template @@ -142,33 +147,40 @@ COPY prepare-nginx-proxy.sh /docker-entrypoint.d/prepare-nginx-proxy.sh RUN chown nginx:nginx /etc/nginx/* -R && \ chown nginx:nginx /docker-entrypoint.d/* && \ # changes for upstream configure - sed -i 's/localhost:5010/$service_api_system/' /etc/nginx/conf.d/onlyoffice.conf && \ - sed -i 's/localhost:5012/$service_backup/' /etc/nginx/conf.d/onlyoffice.conf && \ - sed -i 's/localhost:5021/$service_crm/' /etc/nginx/conf.d/onlyoffice.conf && \ - sed -i 's/localhost:5007/$service_files/' /etc/nginx/conf.d/onlyoffice.conf && \ - sed -i 's/localhost:5004/$service_people_server/' /etc/nginx/conf.d/onlyoffice.conf && \ - sed -i 's/localhost:5020/$service_projects_server/' /etc/nginx/conf.d/onlyoffice.conf && \ - sed -i 's/localhost:5000/$service_api/' /etc/nginx/conf.d/onlyoffice.conf && \ - sed -i 's/localhost:5003/$service_studio/' /etc/nginx/conf.d/onlyoffice.conf && \ - sed -i 's/localhost:5023/$service_calendar/' /etc/nginx/conf.d/onlyoffice.conf && \ - sed -i 's/localhost:9899/$service_socket/' /etc/nginx/conf.d/onlyoffice.conf && \ - sed -i 's/localhost:9834/$service_sso/' /etc/nginx/conf.d/onlyoffice.conf && \ - sed -i 's/localhost:5022/$service_mail/' /etc/nginx/conf.d/onlyoffice.conf && \ - sed -i 's/localhost:9999/$service_urlshortener/' /etc/nginx/conf.d/onlyoffice.conf && \ - sed -i 's/localhost:5034/$service_migration/' /etc/nginx/conf.d/onlyoffice.conf && \ - sed -i 's/localhost:5013/$service_doceditor/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:5010/$service_api_system/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:5012/$service_backup/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:5021/$service_crm/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:5007/$service_files/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:5004/$service_people_server/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:5020/$service_projects_server/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:5000/$service_api/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:5003/$service_studio/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:5023/$service_calendar/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:9899/$service_socket/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:9834/$service_sso/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:5022/$service_mail/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:9999/$service_urlshortener/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:5034/$service_migration/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:5013/$service_doceditor/' /etc/nginx/conf.d/onlyoffice.conf && \ + sed -i 's/127.0.0.1:5011/$service_login/' /etc/nginx/conf.d/onlyoffice.conf && \ sed -i 's/172.*/$document_server;/' /etc/nginx/conf.d/onlyoffice.conf ## Doceditor ## -FROM nodeBuild as doceditor +FROM noderun as doceditor WORKDIR ${BUILD_PATH}/products/ASC.Files/editor COPY --from=base --chown=onlyoffice:onlyoffice ${SRC_PATH}/build/deploy/editor/ . -EXPOSE 5013 +ENTRYPOINT ["node", "server.js"] + +## Login ## +FROM noderun as login +WORKDIR ${BUILD_PATH}/products/ASC.Login/login + +COPY --from=base --chown=onlyoffice:onlyoffice ${SRC_PATH}/build/deploy/login/ . ENTRYPOINT ["node", "server.js"] ## ASC.Data.Backup.BackgroundTasks ## -FROM builder AS backup_background +FROM dotnetrun AS backup_background WORKDIR ${BUILD_PATH}/services/ASC.Data.Backup.BackgroundTasks/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -177,7 +189,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Data.B CMD ["ASC.Data.Backup.BackgroundTasks.dll", "ASC.Data.Backup.BackgroundTasks"] ## ASC.ClearEvents ## -FROM builder AS clear-events +FROM dotnetrun AS clear-events WORKDIR ${BUILD_PATH}/services/ASC.ClearEvents/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -186,7 +198,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.ClearE CMD ["ASC.ClearEvents.dll", "ASC.ClearEvents"] ## ASC.Migration ## -FROM builder AS migration +FROM dotnetrun AS migration WORKDIR ${BUILD_PATH}/services/ASC.Migration/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -195,7 +207,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Migrat CMD ["ASC.Migration.dll", "ASC.Migration"] ## ASC.Data.Backup ## -FROM builder AS backup +FROM dotnetrun AS backup WORKDIR ${BUILD_PATH}/services/ASC.Data.Backup/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -204,7 +216,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Data.B CMD ["ASC.Data.Backup.dll", "ASC.Data.Backup"] ## ASC.Files ## -FROM builder AS files +FROM dotnetrun AS files WORKDIR ${BUILD_PATH}/products/ASC.Files/server/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -213,7 +225,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/products/ASC.Files/ CMD ["ASC.Files.dll", "ASC.Files"] ## ASC.Files.Service ## -FROM builder AS files_services +FROM dotnetrun AS files_services WORKDIR ${BUILD_PATH}/products/ASC.Files/service/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -222,7 +234,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Files. CMD ["ASC.Files.Service.dll", "ASC.Files.Service"] ## ASC.Notify ## -FROM builder AS notify +FROM dotnetrun AS notify WORKDIR ${BUILD_PATH}/services/ASC.Notify/service COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -231,7 +243,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Notify CMD ["ASC.Notify.dll", "ASC.Notify"] ## ASC.People ## -FROM builder AS people_server +FROM dotnetrun AS people_server WORKDIR ${BUILD_PATH}/products/ASC.People/server/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -240,7 +252,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/products/ASC.People CMD ["ASC.People.dll", "ASC.People"] ## ASC.Socket.IO ## -FROM nodeBuild AS socket +FROM noderun AS socket WORKDIR ${BUILD_PATH}/services/ASC.Socket.IO/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -249,7 +261,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Socket CMD ["server.js", "ASC.Socket.IO"] ## ASC.SsoAuth ## -FROM nodeBuild AS ssoauth +FROM noderun AS ssoauth WORKDIR ${BUILD_PATH}/services/ASC.SsoAuth/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -258,7 +270,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.SsoAu CMD ["app.js", "ASC.SsoAuth"] ## ASC.Studio.Notify ## -FROM builder AS studio_notify +FROM dotnetrun AS studio_notify WORKDIR ${BUILD_PATH}/services/ASC.Studio.Notify/service/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -267,7 +279,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Studio CMD ["ASC.Studio.Notify.dll", "ASC.Studio.Notify"] ## ASC.TelegramService ## -FROM builder AS telegram_service +FROM dotnetrun AS telegram_service WORKDIR ${BUILD_PATH}/services/ASC.TelegramService/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -276,7 +288,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Telegr CMD ["ASC.TelegramService.dll", "ASC.TelegramService"] ## ASC.UrlShortener ## -FROM nodeBuild AS urlshortener +FROM noderun AS urlshortener WORKDIR ${BUILD_PATH}/services/ASC.UrlShortener/service/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -285,7 +297,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.UrlSh CMD ["index.js", "ASC.UrlShortener"] ## ASC.Web.Api ## -FROM builder AS api +FROM dotnetrun AS api WORKDIR ${BUILD_PATH}/studio/ASC.Web.Api/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -294,7 +306,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Web.Ap CMD ["ASC.Web.Api.dll", "ASC.Web.Api"] ## ASC.Webhooks.Service ## -FROM builder AS webhooks-service +FROM dotnetrun AS webhooks-service WORKDIR ${BUILD_PATH}/services/ASC.Webhooks.Service/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py @@ -303,7 +315,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Webhoo CMD ["ASC.Webhooks.Service.dll", "ASC.Webhooks.Service"] ## ASC.Web.Studio ## -FROM builder AS studio +FROM dotnetrun AS studio WORKDIR ${BUILD_PATH}/studio/ASC.Web.Studio/ COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py diff --git a/build/install/docker/appserver.yml b/build/install/docker/appserver.yml index ecc474a534..034492093a 100644 --- a/build/install/docker/appserver.yml +++ b/build/install/docker/appserver.yml @@ -51,59 +51,59 @@ services: - "9300" onlyoffice-backup-background-tasks: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-backup-background:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-backup-background:${DOCKER_TAG}" container_name: ${BACKUP_BACKGRUOND_TASKS_HOST} onlyoffice-backup: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-backup:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-backup:${DOCKER_TAG}" container_name: ${BACKUP_HOST} onlyoffice-clear-events: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-clear-events:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-clear-events:${DOCKER_TAG}" container_name: ${CLEAR_EVENTS_HOST} onlyoffice-migration: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-migration:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-migration:${DOCKER_TAG}" container_name: ${MIGRATION_HOST} onlyoffice-files: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-files:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-files:${DOCKER_TAG}" container_name: ${FILES_HOST} onlyoffice-files-services: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-files-services:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-files-services:${DOCKER_TAG}" container_name: ${FILES_SERVICES_HOST} onlyoffice-people-server: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-people-server:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-people-server:${DOCKER_TAG}" container_name: ${PEOPLE_SERVER_HOST} onlyoffice-socket: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-socket:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-socket:${DOCKER_TAG}" container_name: ${SOCKET_HOST} expose: - ${SERVICE_PORT} onlyoffice-studio-notify: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-studio-notify:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio-notify:${DOCKER_TAG}" container_name: ${STUDIO_NOTIFY_HOST} onlyoffice-telegram-service: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-telegram-service:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-telegram-service:${DOCKER_TAG}" container_name: ${TELEGRAM_SERVICE_HOST} onlyoffice-urlshortener: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-urlshortener:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-urlshortener:${DOCKER_TAG}" container_name: ${URLSHORTENER_HOST} expose: - ${SERVICE_PORT} @@ -111,17 +111,17 @@ services: onlyoffice-api: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-api:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-api:${DOCKER_TAG}" container_name: ${API_HOST} onlyoffice-studio: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-studio:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio:${DOCKER_TAG}" container_name: ${STUDIO_HOST} onlyoffice-ssoauth: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-ssoauth:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-ssoauth:${DOCKER_TAG}" container_name: ${SSOAUTH_HOST} expose: - ${SERVICE_PORT} @@ -129,18 +129,25 @@ services: onlyoffice-webhooks-service: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-webhooks-service:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-webhooks-service:${DOCKER_TAG}" container_name: ${WEBHOOKS_SERVICE_HOST} onlyoffice-doceditor: - image: "${REPO}/${STATUS}appserver-doceditor:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-doceditor:${DOCKER_TAG}" container_name: ${DOCEDITOR_HOST} restart: always expose: - "5013" + onlyoffice-login: + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-login:${DOCKER_TAG}" + container_name: ${LOGIN_HOST} + restart: always + expose: + - "5011" + onlyoffice-proxy: - image: "${REPO}/${STATUS}appserver-proxy:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-proxy:${DOCKER_TAG}" container_name: ${PROXY_HOST} restart: always expose: @@ -165,6 +172,8 @@ services: - onlyoffice-api - onlyoffice-studio - onlyoffice-ssoauth + - onlyoffice-doceditor + - onlyoffice-login environment: - SERVICE_BACKUP=${SERVICE_BACKUP} - SERVICE_FILES=${SERVICE_FILES} @@ -182,6 +191,7 @@ services: - SERVICE_STUDIO=${SERVICE_STUDIO} - SERVICE_SSOAUTH=${SERVICE_SSOAUTH} - SERVICE_DOCEDITOR=${SERVICE_DOCEDITOR} + - SERVICE_LOGIN=${SERVICE_LOGIN} - DOCUMENT_SERVER=${DOCUMENT_SERVER_HOST} - SERVICE_PORT=${SERVICE_PORT} volumes: diff --git a/build/install/docker/build.yml b/build/install/docker/build.yml index 504c4a63fa..7c4b81e092 100644 --- a/build/install/docker/build.yml +++ b/build/install/docker/build.yml @@ -6,144 +6,151 @@ services: context: ./ dockerfile: "${DOCKERFILE}" target: backup_background - image: "${REPO}/${STATUS}appserver-backup-background:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-backup-background:${DOCKER_TAG}" onlyoffice-clear-events: build: context: ./ dockerfile: "${DOCKERFILE}" target: clear-events - image: "${REPO}/${STATUS}appserver-clear-events:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-clear-events:${DOCKER_TAG}" onlyoffice-migration: build: context: ./ dockerfile: "${DOCKERFILE}" target: migration - image: "${REPO}/${STATUS}appserver-migration:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-migration:${DOCKER_TAG}" onlyoffice-backup: build: context: ./ dockerfile: "${DOCKERFILE}" target: backup - image: "${REPO}/${STATUS}appserver-backup:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-backup:${DOCKER_TAG}" onlyoffice-files: build: context: ./ dockerfile: "${DOCKERFILE}" target: files - image: "${REPO}/${STATUS}appserver-files:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-files:${DOCKER_TAG}" onlyoffice-files-services: build: context: ./ dockerfile: "${DOCKERFILE}" target: files_services - image: "${REPO}/${STATUS}appserver-files-services:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-files-services:${DOCKER_TAG}" onlyoffice-notify: build: context: ./ dockerfile: "${DOCKERFILE}" target: notify - image: "${REPO}/${STATUS}appserver-notify:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-notify:${DOCKER_TAG}" onlyoffice-people-server: build: context: ./ dockerfile: "${DOCKERFILE}" target: people_server - image: "${REPO}/${STATUS}appserver-people-server:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-people-server:${DOCKER_TAG}" onlyoffice-socket: build: context: ./ dockerfile: "${DOCKERFILE}" target: socket - image: "${REPO}/${STATUS}appserver-socket:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-socket:${DOCKER_TAG}" onlyoffice-studio-notify: build: context: ./ dockerfile: "${DOCKERFILE}" target: studio_notify - image: "${REPO}/${STATUS}appserver-studio-notify:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio-notify:${DOCKER_TAG}" onlyoffice-telegram-service: build: context: ./ dockerfile: "${DOCKERFILE}" target: telegram_service - image: "${REPO}/${STATUS}appserver-telegram-service:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-telegram-service:${DOCKER_TAG}" onlyoffice-urlshortener: build: context: ./ dockerfile: "${DOCKERFILE}" target: urlshortener - image: "${REPO}/${STATUS}appserver-urlshortener:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-urlshortener:${DOCKER_TAG}" onlyoffice-api: build: context: ./ dockerfile: "${DOCKERFILE}" target: api - image: "${REPO}/${STATUS}appserver-api:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-api:${DOCKER_TAG}" onlyoffice-studio: build: context: ./ dockerfile: "${DOCKERFILE}" target: studio - image: "${REPO}/${STATUS}appserver-studio:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio:${DOCKER_TAG}" onlyoffice-ssoauth: build: context: ./ dockerfile: "${DOCKERFILE}" target: ssoauth - image: "${REPO}/${STATUS}appserver-ssoauth:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-ssoauth:${DOCKER_TAG}" onlyoffice-webhooks-service: build: context: ./ dockerfile: "${DOCKERFILE}" target: webhooks-service - image: "${REPO}/${STATUS}appserver-webhooks-service:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-webhooks-service:${DOCKER_TAG}" onlyoffice-bin-share: build: context: ./ dockerfile: "${DOCKERFILE}" target: bin_share - image: "${REPO}/${STATUS}appserver-bin-share:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-bin-share:${DOCKER_TAG}" onlyoffice-wait-bin-share: build: context: ./ dockerfile: "${DOCKERFILE}" target: wait_bin_share - image: "${REPO}/${STATUS}appserver-wait-bin-share:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-wait-bin-share:${DOCKER_TAG}" onlyoffice-doceditor: build: context: ./ dockerfile: "${DOCKERFILE}" target: doceditor - image: "${REPO}/${STATUS}appserver-doceditor:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-doceditor:${DOCKER_TAG}" + onlyoffice-login: + build: + context: ./ + dockerfile: "${DOCKERFILE}" + target: login + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-login:${DOCKER_TAG}" + onlyoffice-proxy: build: context: ./ dockerfile: "${DOCKERFILE}" - target: web - image: "${REPO}/${STATUS}appserver-proxy:${DOCKER_TAG}" + target: proxy + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-proxy:${DOCKER_TAG}" onlyoffice-migration-runner: build: context: ./ dockerfile: "${DOCKERFILE}" target: onlyoffice-migration-runner - image: "${REPO}/${STATUS}appserver-migration-runner:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-migration-runner:${DOCKER_TAG}" diff --git a/build/install/docker/config/nginx/templates/upstream.conf.template b/build/install/docker/config/nginx/templates/upstream.conf.template index 8690f5c4f1..cbbc1265ba 100644 --- a/build/install/docker/config/nginx/templates/upstream.conf.template +++ b/build/install/docker/config/nginx/templates/upstream.conf.template @@ -1,5 +1,10 @@ resolver $DNS_NAMESERVER valid=30s; +map $SERVICE_LOGIN $service_login { + volatile; + $SERVICE_LOGIN $SERVICE_LOGIN; +} + map $SERVICE_DOCEDITOR $service_doceditor { volatile; $SERVICE_DOCEDITOR $SERVICE_DOCEDITOR; diff --git a/build/install/docker/hooks/build b/build/install/docker/hooks/build index 71a5150569..a5f5885bb4 100644 --- a/build/install/docker/hooks/build +++ b/build/install/docker/hooks/build @@ -1,6 +1,7 @@ #!/bin/bash export DOCKER_TAG=$DOCKER_TAG BUILD_NUMBER="$(date "+%Y%m%d%H")" + docker-compose -f build.yml build \ --build-arg GIT_BRANCH=$SOURCE_BRANCH \ --build-arg PRODUCT_VERSION=$PRODUCT_VERSION \ diff --git a/build/install/docker/hooks/push b/build/install/docker/hooks/push index 8e1d23b25c..0f309d8e9c 100644 --- a/build/install/docker/hooks/push +++ b/build/install/docker/hooks/push @@ -1,11 +1,10 @@ #!/bin/bash -export DOCKER_TAG=$DOCKER_TAG -BASE_NAME="appserver" BUILD_NUMBER="$(date "+%Y%m%d%H")" + docker-compose -f build.yml push # Get docker images name to array -arrayImagesName=($(docker image ls | grep "$DOCKER_TAG" | grep "$STATUS" | grep "$BASE_NAME" | awk '{print $1}' )) +arrayImagesName=($(docker image ls | grep "$DOCKER_TAG" | grep "$DOCKER_IMAGE_PREFIX" | awk '{print $1}' )) # Modify docker image tag for i in ${!arrayImagesName[@]}; do diff --git a/build/install/docker/migration-runner.yml b/build/install/docker/migration-runner.yml index 8c8af84f63..a8a1d1cf78 100644 --- a/build/install/docker/migration-runner.yml +++ b/build/install/docker/migration-runner.yml @@ -2,7 +2,7 @@ version: "3.8" services: onlyoffice-migration-runner: - image: "${REPO}/${STATUS}appserver-migration-runner:${DOCKER_TAG}" + image: "${REPO}/${STATUS}${DOCKER_IMAGE_PREFIX}-migration-runner:${DOCKER_TAG}" container_name: ${MIGRATION_RUNNER_HOST} restart: "no" environment: diff --git a/build/install/docker/notify.yml b/build/install/docker/notify.yml index 2b6e46bbf1..f0b4912937 100644 --- a/build/install/docker/notify.yml +++ b/build/install/docker/notify.yml @@ -31,7 +31,7 @@ x-service: services: onlyoffice-notify: <<: *x-service-base - image: "${REPO}/${STATUS}appserver-notify:${DOCKER_TAG}" + image: "${REPO}/${DOCKER_IMAGE_PREFIX}-notify:${DOCKER_TAG}" container_name: ${NOTIFY_HOST} networks: