diff --git a/build/build.backend.docker.ps1 b/build/build.backend.docker.ps1 index 8b928c3550..5c90b5fa7a 100644 --- a/build/build.backend.docker.ps1 +++ b/build/build.backend.docker.ps1 @@ -1,3 +1,11 @@ +$PSversionMajor = $PSVersionTable.PSVersion | sort-object major | ForEach-Object { $_.major } +$PSversionMinor = $PSVersionTable.PSVersion | sort-object minor | ForEach-Object { $_.minor } + +if ($PSversionMajor -lt 7 -or $PSversionMinor -lt 2) { + Write-Error "Powershell version must be greater than or equal to 7.2." + exit +} + $RootDir = Split-Path -Parent $PSScriptRoot $Branch = git branch --show-current $DockerDir = ($RootDir + "\build\install\docker") @@ -15,40 +23,39 @@ $CoreBaseDomain = "localhost" # Stop all backend services" & "$PSScriptRoot\start\stop.backend.docker.ps1" +$Env:COMPOSE_IGNORE_ORPHANS = "True" + $Containers = docker ps -a -f "name=^onlyoffice" --format="{{.ID}} {{.Names}}" | Select-String -Pattern ("mysql|rabbitmq|redis|elasticsearch|documentserver") -NotMatch | ConvertFrom-String | ForEach-Object P1 -$Images = docker images onlyoffice/docspace* +$Images = docker images onlyoffice/docspace* -q if ($Containers) { - Write-Host "Remove all backend containers" + Write-Host "Remove all backend containers" -ForegroundColor Blue docker rm -f $Containers } if ($Images) { - Write-Host "Remove all backend images" + Write-Host "Remove all docker images except 'mysql, rabbitmq, redis, elasticsearch, documentserver'" -ForegroundColor Blue docker rmi -f $Images - - Write-Host "Remove all docker images except 'mysql, rabbitmq, redis, elasticsearch, documentserver'" - docker image rm -f $Images } -Write-Host "Run MySQL" +Write-Host "Run MySQL" -ForegroundColor Green docker compose -f ($DockerDir + "\db.yml") up -d -Write-Host "Run environments (redis, rabbitmq)" -$env:DOCKERFILE = $DockerFile +Write-Host "Run environments (redis, rabbitmq)" -ForegroundColor Green +$Env:DOCKERFILE = $DockerFile docker compose -f ($DockerDir + "\redis.yml") -f ($DockerDir + "\rabbitmq.yml") up -d if ($args[0] -eq "--no_ds") { - Write-Host "SKIP Document server" + Write-Host "SKIP Document server" -ForegroundColor Blue } else { - Write-Host "Run Document server" + Write-Host "Run Document server" -ForegroundColor Green $Env:DOCUMENT_SERVER_IMAGE_NAME = "onlyoffice/documentserver-de:latest" $Env:ROOT_DIR = $RootDir docker compose -f ($DockerDir + "\ds.dev.yml") up -d } -Write-Host "Build all backend services" +Write-Host "Build all backend services" -ForegroundColor Blue $Env:DOCKERFILE = $DockerFile $Env:RELEASE_DATE = $BuildDate $Env:GIT_BRANCH = $Branch @@ -59,7 +66,7 @@ $Env:APP_CORE_BASE_DOMAIN = $CoreBaseDomain $Env:ENV_EXTENSION = $EnvExtension docker compose -f ($DockerDir + "\build.dev.yml") build --build-arg GIT_BRANCH=$Branch --build-arg RELEASE_DATE=$BuildDate -Write-Host "Run DB migration" +Write-Host "Run DB migration" -ForegroundColor Green $Env:DOCKERFILE = $DockerFile docker compose -f ($DockerDir + "\migration-runner.yml") up -d diff --git a/build/install/docker/Dockerfile.dev b/build/install/docker/Dockerfile.dev index 8d216353e9..e030ebbb03 100644 --- a/build/install/docker/Dockerfile.dev +++ b/build/install/docker/Dockerfile.dev @@ -319,7 +319,7 @@ ARG SRC_PATH ENV BUILD_PATH=${BUILD_PATH} ENV SRC_PATH=${SRC_PATH} WORKDIR ${BUILD_PATH}/services/ASC.Migration.Runner/ -COPY ./docker-migration-entrypoint.sh ./docker-migration-entrypoint.sh +COPY docker-migration-entrypoint.sh docker-migration-entrypoint.sh COPY --from=base ${SRC_PATH}/ASC.Migration.Runner/service/ . ENTRYPOINT ["./docker-migration-entrypoint.sh"] diff --git a/build/install/docker/appserver.yml b/build/install/docker/appserver.yml index 966741022a..d4ae122650 100644 --- a/build/install/docker/appserver.yml +++ b/build/install/docker/appserver.yml @@ -1,34 +1,33 @@ version: "3.8" -x-service: - &x-service-base - container_name: base - restart: always - expose: +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} - DATABASE_MIGRATION: ${DATABASE_MIGRATION} - 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} - KAFKA_HOST: ${KAFKA_HOST} - ELK_HOST: ${ELK_HOST} - PROXY_HOST: ${PROXY_HOST} - volumes: + environment: + MYSQL_HOST: ${MYSQL_HOST} + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${MYSQL_DATABASE} + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + DATABASE_MIGRATION: ${DATABASE_MIGRATION} + 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} + 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/ - -services: + +services: onlyoffice-elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:${ELK_VERSION} container_name: ${ELK_HOST} @@ -58,7 +57,7 @@ services: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-backup:${DOCKER_TAG}" container_name: ${BACKUP_HOST} - + onlyoffice-clear-events: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-clear-events:${DOCKER_TAG}" @@ -78,7 +77,7 @@ services: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-files-services:${DOCKER_TAG}" container_name: ${FILES_SERVICES_HOST} - + onlyoffice-people-server: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-people-server:${DOCKER_TAG}" @@ -89,8 +88,8 @@ services: image: "${REPO}/${DOCKER_IMAGE_PREFIX}-socket:${DOCKER_TAG}" container_name: ${SOCKET_HOST} expose: - - ${SERVICE_PORT} - + - ${SERVICE_PORT} + onlyoffice-studio-notify: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio-notify:${DOCKER_TAG}" @@ -106,8 +105,8 @@ services: image: "${REPO}/${DOCKER_IMAGE_PREFIX}-urlshortener:${DOCKER_TAG}" container_name: ${URLSHORTENER_HOST} expose: - - ${SERVICE_PORT} - - "9999" + - ${SERVICE_PORT} + - "9999" onlyoffice-api: <<: *x-service-base @@ -123,19 +122,19 @@ services: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio:${DOCKER_TAG}" container_name: ${STUDIO_HOST} - + onlyoffice-ssoauth: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-ssoauth:${DOCKER_TAG}" container_name: ${SSOAUTH_HOST} expose: - - ${SERVICE_PORT} - - "9834" + - ${SERVICE_PORT} + - "9834" onlyoffice-webhooks-service: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-webhooks-service:${DOCKER_TAG}" - container_name: ${WEBHOOKS_SERVICE_HOST} + container_name: ${WEBHOOKS_SERVICE_HOST} onlyoffice-doceditor: image: "${REPO}/${DOCKER_IMAGE_PREFIX}-doceditor:${DOCKER_TAG}" @@ -160,7 +159,7 @@ services: - "8099" - "8092" ports: - - 8092:8092 + - 8092:8092 depends_on: - onlyoffice-backup-background-tasks - onlyoffice-backup @@ -206,8 +205,8 @@ services: networks: default: - external: - name: ${NETWORK_NAME} + name: ${NETWORK_NAME} + external: true volumes: es_data: diff --git a/build/start/start.backend.docker.ps1 b/build/start/start.backend.docker.ps1 index c6b68af9ee..002b81c288 100644 --- a/build/start/start.backend.docker.ps1 +++ b/build/start/start.backend.docker.ps1 @@ -1,3 +1,11 @@ +$PSversionMajor = $PSVersionTable.PSVersion | sort-object major | ForEach-Object { $_.major } +$PSversionMinor = $PSVersionTable.PSVersion | sort-object minor | ForEach-Object { $_.minor } + +if ($PSversionMajor -lt 7 -or $PSversionMinor -lt 2) { + Write-Error "Powershell version must be greater than or equal to 7.2." + exit +} + $RootDir = Split-Path (Split-Path -Parent $PSScriptRoot) -Parent $Branch = git branch --show-current $DockerDir = ($RootDir + "\build\install\docker") @@ -12,8 +20,7 @@ $DockerFile = "Dockerfile.dev" $EnvExtension = "dev" $CoreBaseDomain = "localhost" -Write-Host "Start all backend services (containers)" - +Write-Host "Start all backend services (containers)" -ForegroundColor Green $Env:DOCKERFILE = $DockerFile $Env:ROOT_DIR = $RootDir $Env:RELEASE_DATE = $BuildDate @@ -24,5 +31,4 @@ $Env:SERVICE_CLIENT = $Client $Env:APP_CORE_BASE_DOMAIN = $CoreBaseDomain $Env:APP_URL_PORTAL = ("http://" + $LocalIp + ":8092") $Env:ENV_EXTENSION = $EnvExtension - docker compose -f ($DockerDir + "\docspace.dev.yml") up -d \ No newline at end of file diff --git a/build/start/stop.backend.docker.ps1 b/build/start/stop.backend.docker.ps1 index 765a3ce6d4..b62cc6f7ea 100644 --- a/build/start/stop.backend.docker.ps1 +++ b/build/start/stop.backend.docker.ps1 @@ -1,5 +1,17 @@ -Write-Host "Stop all backend services (containers)" +$PSversionMajor = $PSVersionTable.PSVersion | sort-object major | ForEach-Object { $_.major } +$PSversionMinor = $PSVersionTable.PSVersion | sort-object minor | ForEach-Object { $_.minor } + +if ($PSversionMajor -lt 7 -or $PSversionMinor -lt 2) { + Write-Error "Powershell version must be greater than or equal to 7.2." + exit +} $Containers = docker ps -a -f "name=^onlyoffice" --format="{{.ID}} {{.Names}}" | Select-String -Pattern ("mysql|rabbitmq|redis|elasticsearch|documentserver") -NotMatch | ConvertFrom-String | ForEach-Object P1 +if (-not $Containers) { + Write-Host "No containers to stop" -ForegroundColor Blue + exit +} + +Write-Host "Stop all backend services (containers)" -ForegroundColor Green docker stop $Containers \ No newline at end of file