Merge remote-tracking branch 'origin/develop' into feature/new-service-identity

This commit is contained in:
Elbakyan Shirak 2024-09-01 20:29:04 +04:00
commit 9989d19577
11 changed files with 240 additions and 69 deletions

View File

@ -202,7 +202,7 @@ subprocess.run(["docker", "compose", "-f", os.path.join(dockerDir, "docspace.pro
if identity:
print("Run identity")
subprocess.run(["docker-compose", "-f",os.path.join(dockerDir, "identity.yml"), "up", "-d" ])
subprocess.run(["docker-compose", "-f",os.path.join(dockerDir, "build-identity.yml"), "up", "-d" ])
print()
print("Run script directory:", dir)

View File

@ -1254,11 +1254,12 @@ install_product () {
if [ "${UPDATE}" = "true" ] && [ "${LOCAL_CONTAINER_TAG}" != "${DOCKER_TAG}" ]; then
docker-compose -f $BASE_DIR/build.yml pull
docker-compose -f $BASE_DIR/migration-runner.yml -f $BASE_DIR/notify.yml -f $BASE_DIR/healthchecks.yml -f ${PROXY_YML} down
docker-compose -f $BASE_DIR/migration-runner.yml -f $BASE_DIR/identity.yml -f $BASE_DIR/notify.yml -f $BASE_DIR/healthchecks.yml -f ${PROXY_YML} down
docker-compose -f $BASE_DIR/${PRODUCT}.yml down --volumes
fi
reconfigure ENV_EXTENSION ${ENV_EXTENSION}
reconfigure IDENTITY_PROFILE "${IDENTITY_PROFILE:-"prod"}"
reconfigure APP_CORE_MACHINEKEY ${APP_CORE_MACHINEKEY}
reconfigure APP_CORE_BASE_DOMAIN ${APP_CORE_BASE_DOMAIN}
reconfigure APP_URL_PORTAL "${APP_URL_PORTAL:-"http://${PACKAGE_SYSNAME}-router:8092"}"
@ -1275,6 +1276,7 @@ install_product () {
timeout 30 bash -c "while [ $(docker wait ${PACKAGE_SYSNAME}-migration-runner) -ne 0 ]; do sleep 1; done;" && echo "OK" || echo "FAILED"
fi
docker-compose -f $BASE_DIR/identity.yml up -d
docker-compose -f $BASE_DIR/${PRODUCT}.yml up -d
docker-compose -f ${PROXY_YML} up -d
docker-compose -f $BASE_DIR/notify.yml up -d
@ -1293,6 +1295,7 @@ install_product () {
bash $BASE_DIR/config/${PRODUCT}-ssl-setup "${LETS_ENCRYPT_MAIL}" "${LETS_ENCRYPT_DOMAIN}"
fi
elif [ "$INSTALL_PRODUCT" == "pull" ]; then
docker-compose -f $BASE_DIR/identity.yml pull
docker-compose -f $BASE_DIR/migration-runner.yml pull
docker-compose -f $BASE_DIR/${PRODUCT}.yml pull
docker-compose -f ${PROXY_YML} pull

View File

@ -58,3 +58,22 @@ for i in ${!services_name_backend_nodejs[@]}; do
cd ${SRC_PATH}/server/common/${services_name_backend_nodejs[$i]}
yarn install --frozen-lockfile
done
# Array of names identity services
IDENTITY_NAMES+=("ASC.Identity.Authorization")
IDENTITY_NAMES+=("ASC.Identity.Registration")
IDENTITY_NAMES+=("ASC.Identity.Migration")
IDENTITY_MODULES+=("authorization/authorization-container")
IDENTITY_MODULES+=("registration/registration-container")
IDENTITY_MODULES+=("infrastructure/infrastructure-migration-runner")
cd ${SRC_PATH}/server/common/ASC.Identity/
# Build and publish identity services
mvn dependency:go-offline
for i in "${!IDENTITY_NAMES[@]}"; do
echo "== Build ${IDENTITY_NAMES[$i]} project =="
mvn clean package -DskipTests -pl "${IDENTITY_MODULES[$i]}" -am
mkdir -p ${IDENTITY_NAMES[$i]} && cp -rf "${IDENTITY_MODULES[$i]}/target/"*.jar "${IDENTITY_NAMES[$i]}/app.jar"
done

View File

@ -102,10 +102,14 @@ services_name_backend_nodejs=()
services_name_backend_nodejs+=(ASC.Socket.IO)
services_name_backend_nodejs+=(ASC.SsoAuth)
# Publish backend services (Nodejs)
for i in ${!services_name_backend_nodejs[@]}; do
echo "== Publish ${services_name_backend_nodejs[$i]} project =="
SERVICE_DIR="$(find ${SRC_PATH} -type d -name ${services_name_backend_nodejs[$i]})"
cd ${SERVICE_DIR}
mkdir -p ${BUILD_PATH}/services/${services_name_backend_nodejs[$i]}/service/ && cp -arfv ./* ${BUILD_PATH}/services/${services_name_backend_nodejs[$i]}/service/
services_name_backend_java+=(ASC.Identity.Authorization)
services_name_backend_java+=(ASC.Identity.Registration)
services_name_backend_java+=(ASC.Identity.Migration)
# Publish backend services (Nodejs/Java)
for SERVICE in "${services_name_backend_nodejs[@]}" "${services_name_backend_java[@]}"; do
echo "== Publish ${SERVICE} project =="
SERVICE_DIR="$(find ${SRC_PATH} -type d -name ${SERVICE})"
mkdir -p ${BUILD_PATH}/services/${SERVICE}/service/
cp -arfv ${SERVICE_DIR}/* ${BUILD_PATH}/services/${SERVICE}/service/
done

View File

@ -120,24 +120,14 @@
HELTHCHECKS_HOST=${CONTAINER_PREFIX}healthchecks
# identity #
IDENTITY_DOCKERFILE=Dockerfile
JDBC_USER_NAME=root
JDBC_PASSWORD=${MYSQL_ROOT_PASSWORD}
JDBC_URL=${MYSQL_CONTAINER_NAME}
JDBC_DATABASE=${MYSQL_DATABASE}
IDENTITY_PROFILE="dev"
IDENTITY_MIGRATION_CONTAINER_NAME=${CONTAINER_PREFIX}identity_migration
IDENTITY_MIGRATION_CONTAINER_NAME=${CONTAINER_PREFIX}identity-migration
IDENTITY_MIGRATION_SERVER_PORT=8081
IDENTITY_AUTHORIZATION_CONTAINER_NAME=${CONTAINER_PREFIX}identity-authorization
IDENTITY_AUTHORIZATION_SERVER_PORT=8080
IDENTITY_API_CONTAINER_NAME=${CONTAINER_PREFIX}identity-api
IDENTITY_API_SERVER_PORT=9090
REDIS_ADDRESSES=redis://onlyoffice-redis:6379
# router upstream environment #
SERVICE_API_SYSTEM=${API_SYSTEM_HOST}:${SERVICE_PORT}
SERVICE_BACKUP=${BACKUP_HOST}:${SERVICE_PORT}

View File

@ -29,9 +29,12 @@ RUN apt-get -y update && \
locales \
git \
python3-pip \
maven \
npm && \
locale-gen en_US.UTF-8 && \
npm install --global yarn && \
wget -O openjdk-21-jdk.deb https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb && \
dpkg -i openjdk-21-jdk.deb && apt-get install -f && \
echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/nodesource.gpg --import && \
chmod 644 /usr/share/keyrings/nodesource.gpg && \
@ -128,6 +131,22 @@ USER onlyoffice
EXPOSE 5050
ENTRYPOINT ["python3", "docker-entrypoint.py"]
FROM eclipse-temurin:21-jre-alpine AS javarun
ARG BUILD_PATH
ENV BUILD_PATH=${BUILD_PATH}
RUN mkdir -p /var/log/onlyoffice && \
mkdir -p /var/www/onlyoffice && \
addgroup -S -g 107 onlyoffice && \
adduser -S -u 104 -h /var/www/onlyoffice -G onlyoffice onlyoffice && \
chown onlyoffice:onlyoffice /var/log -R && \
chown onlyoffice:onlyoffice /var/www -R && \
apk add --no-cache sudo bash nano curl
COPY ./docker-identity-entrypoint.sh /usr/bin/docker-identity-entrypoint.sh
USER onlyoffice
ENTRYPOINT ["bash", "/usr/bin/docker-identity-entrypoint.sh"]
## Nginx image ##
FROM openresty/openresty:focal AS router
ARG SRC_PATH
@ -362,6 +381,24 @@ COPY --from=base ${SRC_PATH}/server/ASC.Migration.Runner/service/ .
ENTRYPOINT ["./docker-migration-entrypoint.sh"]
## ASC.Identity.Authorization ##
FROM javarun AS identity-authorization
WORKDIR ${BUILD_PATH}/services/ASC.Identity.Authorization/
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Identity.Authorization/service/ .
CMD ["ASC.Identity.Authorization"]
## ASC.Identity.Registration ##
FROM javarun AS identity-api
WORKDIR ${BUILD_PATH}/services/ASC.Identity.Registration/
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Identity.Registration/service/ .
CMD ["ASC.Identity.Registration"]
## ASC.Identity.Migration ##
FROM javarun AS identity-migration
WORKDIR ${BUILD_PATH}/services/ASC.Identity.Migration/
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Identity.Migration/service/ .
CMD ["ASC.Identity.Migration"]
## image for k8s bin-share ##
FROM busybox:latest AS bin_share
RUN mkdir -p /app/ASC.Files/server && \

View File

@ -0,0 +1,65 @@
x-build: &x-build
context: ../../../server/common/ASC.Identity
dockerfile: Dockerfile
x-common-environment: &x-common-environment
JDBC_PASSWORD: ${MYSQL_ROOT_PASSWORD}
JDBC_URL: ${MYSQL_HOST}
JDBC_USER_NAME: root
JDBC_DATABASE: ${MYSQL_DATABASE}
RABBIT_HOST: ${RABBIT_CONTAINER_NAME}
REDIS_HOST: ${REDIS_CONTAINER_NAME}
services:
onlyoffice-identity-authorization:
build:
<<: *x-build
args:
- MODULE=authorization/authorization-container
image: "${HUB}${REPO}/${DOCKER_IMAGE_PREFIX}-identity-authorization:${DOCKER_TAG}"
container_name: ${IDENTITY_AUTHORIZATION_CONTAINER_NAME}
restart: always
ports:
- "${IDENTITY_AUTHORIZATION_SERVER_PORT}:${IDENTITY_AUTHORIZATION_SERVER_PORT}"
environment:
<<: *x-common-environment
SPRING_PROFILES_ACTIVE: ${IDENTITY_PROFILE}
SPRING_APPLICATION_NAME: ASC.Identity.Authorization
SERVER_PORT: ${IDENTITY_AUTHORIZATION_SERVER_PORT}
depends_on:
- onlyoffice-identity-migration
onlyoffice-identity-api:
build:
<<: *x-build
args:
- MODULE=registration/registration-container
image: "${HUB}${REPO}/${DOCKER_IMAGE_PREFIX}-identity-api:${DOCKER_TAG}"
container_name: ${IDENTITY_API_CONTAINER_NAME}
ports:
- "${IDENTITY_API_SERVER_PORT}:${IDENTITY_API_SERVER_PORT}"
environment:
<<: *x-common-environment
SPRING_PROFILES_ACTIVE: ${IDENTITY_PROFILE}
SPRING_APPLICATION_NAME: ASC.Identity.Registration
SERVER_PORT: ${IDENTITY_API_SERVER_PORT}
depends_on:
- onlyoffice-identity-migration
onlyoffice-identity-migration:
build:
<<: *x-build
args:
- MODULE=infrastructure/infrastructure-migration-runner
image: "${HUB}${REPO}/${DOCKER_IMAGE_PREFIX}-identity-migration:${DOCKER_TAG}"
container_name: ${IDENTITY_MIGRATION_CONTAINER_NAME}
restart: "no"
ports:
- "${IDENTITY_MIGRATION_SERVER_PORT}:${IDENTITY_MIGRATION_SERVER_PORT}"
environment:
<<: *x-common-environment
networks:
default:
name: ${NETWORK_NAME}
external: true

View File

@ -138,3 +138,24 @@ services:
dockerfile: "${DOCKERFILE}"
target: healthchecks
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-healthchecks:${DOCKER_TAG}"
onlyoffice-identity-authorization:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: identity-authorization
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-identity-authorization:${DOCKER_TAG}"
onlyoffice-identity-api:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: identity-api
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-identity-api:${DOCKER_TAG}"
onlyoffice-identity-migration:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: identity-migration
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-identity-migration:${DOCKER_TAG}"

View File

@ -3,3 +3,4 @@ sql_mode = 'NO_ENGINE_SUBSTITUTION'
max_connections = 1000
max_allowed_packet = 1048576000
group_concat_max_len = 2048
log_bin_trust_function_creators = 1

View File

@ -0,0 +1,24 @@
#!/bin/bash
export SPRING_APPLICATION_NAME="${1}"
export JDBC_URL=${MYSQL_HOST:-${MYSQL_CONTAINER_NAME}}
export JDBC_DATABASE=${MYSQL_DATABASE:-"onlyoffice"}
export JDBC_USER_NAME=${MYSQL_USER:-"onlyoffice_user"}
export JDBC_PASSWORD=${MYSQL_PASSWORD:-"onlyoffice_pass"}
export REDIS_HOST=${REDIS_HOST:-${REDIS_CONTAINER_NAME}}
export REDIS_PORT=${REDIS_PORT:-"6379"}
export REDIS_USERNAME=${REDIS_USER_NAME}
export REDIS_PASSWORD=${REDIS_PASSWORD}
export RABBIT_PROTOCOL=${RABBIT_PROTOCOL:-"amqp"}
export RABBIT_HOST=${RABBIT_HOST:-${RABBIT_CONTAINER_NAME}}
export RABBIT_USER_NAME=${RABBIT_USER_NAME:-"guest"}
export RABBIT_PASSWORD=${RABBIT_PASSWORD:-"guest"}
export RABBIT_VIRTUAL_HOST=${RABBIT_VIRTUAL_HOST:-"/"}
export RABBIT_URI="${RABBIT_PROTOCOL}://${RABBIT_USER_NAME}:${RABBIT_PASSWORD}@${RABBIT_HOST}${RABBIT_VIRTUAL_HOST}"
export LOG_FILE_PATH="${LOG_DIR:-"/var/log/onlyoffice"}/${SPRING_APPLICATION_NAME}.log"
java -jar ${BUILD_PATH}/services/${SPRING_APPLICATION_NAME}/app.jar

View File

@ -1,72 +1,79 @@
version: "3.8"
x-healthcheck: &x-healthcheck
interval: 60s
retries: 5
start_period: 20s
timeout: 10s
x-common-environment: &x-common-environment
SPRING_PROFILES_ACTIVE: ${IDENTITY_PROFILE}
MYSQL_CONTAINER_NAME: ${MYSQL_CONTAINER_NAME}
MYSQL_HOST: ${MYSQL_HOST}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
RABBIT_CONTAINER_NAME: ${RABBIT_CONTAINER_NAME}
RABBIT_PROTOCOL: ${RABBIT_PROTOCOL}
RABBIT_HOST: ${RABBIT_HOST}
RABBIT_USER_NAME: ${RABBIT_USER_NAME}
RABBIT_PASSWORD: ${RABBIT_PASSWORD}
RABBIT_VIRTUAL_HOST: ${RABBIT_VIRTUAL_HOST}
REDIS_HOST: ${REDIS_HOST}
REDIS_PORT: ${REDIS_PORT}
REDIS_USERNAME: ${REDIS_USER_NAME}
REDIS_PASSWORD: ${REDIS_PASSWORD}
REDIS_CONTAINER_NAME: ${REDIS_CONTAINER_NAME}
services:
onlyoffice-identity-authorization:
build:
context: ../../../server/common/ASC.Identity
dockerfile: ${IDENTITY_DOCKERFILE}
args:
- MODULE=authorization/authorization-container
image: "${HUB}${REPO}/${DOCKER_IMAGE_PREFIX}-identity-authorization:${DOCKER_TAG}"
container_name: ${IDENTITY_AUTHORIZATION_CONTAINER_NAME}
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-identity-authorization:${DOCKER_TAG}"
user: "${UID}:${GID}"
restart: always
ports:
- 8080:8080
- "${IDENTITY_AUTHORIZATION_SERVER_PORT}:${IDENTITY_AUTHORIZATION_SERVER_PORT}"
environment:
- SPRING_PROFILES_ACTIVE=${IDENTITY_PROFILE}
- SPRING_APPLICATION_NAME=ASC.Identity.Authorization
- SERVER_PORT=${IDENTITY_AUTHORIZATION_SERVER_PORT}
- JDBC_PASSWORD=${JDBC_PASSWORD}
- JDBC_URL=${JDBC_URL}
- JDBC_USER_NAME=${JDBC_USER_NAME}
- JDBC_DATABASE=${JDBC_DATABASE}
- RABBIT_HOST=onlyoffice-rabbitmq
- REDIS_HOST=onlyoffice-redis
<<: *x-common-environment
SERVER_PORT: ${IDENTITY_AUTHORIZATION_SERVER_PORT}
healthcheck:
<<: *x-healthcheck
test: curl --fail ${SERVICE_IDENTITY}/health/ || exit 1
volumes:
- log_data:/var/log/onlyoffice
depends_on:
- onlyoffice-identity-migration
onlyoffice-identity-api:
build:
context: ../../../server/common/ASC.Identity
dockerfile: ${IDENTITY_DOCKERFILE}
args:
- MODULE=registration/registration-container
image: "${HUB}${REPO}/${DOCKER_IMAGE_PREFIX}-identity-api:${DOCKER_TAG}"
container_name: ${IDENTITY_API_CONTAINER_NAME}
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-identity-api:${DOCKER_TAG}"
ports:
- 9090:9090
user: "${UID}:${GID}"
restart: always
expose:
- "${IDENTITY_API_SERVER_PORT}"
environment:
- SPRING_PROFILES_ACTIVE=${PROFILE}
- SPRING_APPLICATION_NAME=ASC.Identity.Registration
- SERVER_PORT=${IDENTITY_API_SERVER_PORT}
- JDBC_PASSWORD=${JDBC_PASSWORD}
- JDBC_URL=${JDBC_URL}
- JDBC_USER_NAME=${JDBC_USER_NAME}
- JDBC_DATABASE=${JDBC_DATABASE}
- RABBIT_HOST=onlyoffice-rabbitmq
- REDIS_HOST=onlyoffice-redis
<<: *x-common-environment
SERVER_PORT: ${IDENTITY_API_SERVER_PORT}
healthcheck:
<<: *x-healthcheck
test: curl --fail ${SERVICE_IDENTITY_API}/health/ || exit 1
volumes:
- log_data:/var/log/onlyoffice
depends_on:
- onlyoffice-identity-migration
onlyoffice-identity-migration:
build:
context: ../../../server/common/ASC.Identity
dockerfile: ${IDENTITY_DOCKERFILE}
args:
- MODULE=infrastructure/infrastructure-migration-runner
container_name: ${IDENTITY_MIGRATION_CONTAINER_NAME}
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-identity-migration:${DOCKER_TAG}"
restart: "no"
ports:
- 8081:8081
image: "${HUB}${REPO}/${DOCKER_IMAGE_PREFIX}-identity-migration:${DOCKER_TAG}"
container_name: ${IDENTITY_MIGRATION_CONTAINER_NAME}
user: "${UID}:${GID}"
restart: on-failure
expose:
- "${IDENTITY_MIGRATION_SERVER_PORT}"
environment:
- JDBC_PASSWORD=${JDBC_PASSWORD}
- JDBC_URL=${JDBC_URL}
- JDBC_USER_NAME=${JDBC_USER_NAME}
- JDBC_DATABASE=${JDBC_DATABASE}
- RABBIT_HOST=onlyoffice-rabbitmq
- REDIS_HOST=onlyoffice-redis
<<: *x-common-environment
networks:
default:
name: ${NETWORK_NAME}
external: true
volumes:
log_data: