version: "3.8" x-healthcheck: &x-healthcheck test: curl --fail http://127.0.0.1 || exit 1 interval: 60s retries: 5 start_period: 20s timeout: 10s x-service: &x-service-base container_name: base restart: always expose: - ${SERVICE_PORT} environment: MYSQL_CONTAINER_NAME: ${MYSQL_CONTAINER_NAME} 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_KNOWN_NETWORKS: ${APP_KNOWN_NETWORKS} APP_KNOWN_PROXIES: ${APP_KNOWN_PROXIES} APP_CORE_BASE_DOMAIN: ${APP_CORE_BASE_DOMAIN} APP_CORE_MACHINEKEY: ${APP_CORE_MACHINEKEY} APP_URL_PORTAL: ${APP_URL_PORTAL} INSTALLATION_TYPE: ${INSTALLATION_TYPE} OAUTH_REDIRECT_URL: ${OAUTH_REDIRECT_URL} 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_CONTAINER_NAME: ${DOCUMENT_CONTAINER_NAME} DOCUMENT_SERVER_URL_EXTERNAL: ${DOCUMENT_SERVER_URL_EXTERNAL} KAFKA_HOST: ${KAFKA_HOST} ELK_CONTAINER_NAME: ${ELK_CONTAINER_NAME} ELK_SHEME: ${ELK_SHEME} ELK_HOST: ${ELK_HOST} ELK_PORT: ${ELK_PORT} REDIS_CONTAINER_NAME: ${REDIS_CONTAINER_NAME} REDIS_HOST: ${REDIS_HOST} REDIS_PORT: ${REDIS_PORT} REDIS_USER_NAME: ${REDIS_USER_NAME} REDIS_PASSWORD: ${REDIS_PASSWORD} RABBIT_CONTAINER_NAME: ${RABBIT_CONTAINER_NAME} RABBIT_HOST: ${RABBIT_HOST} RABBIT_PORT: ${RABBIT_PORT} RABBIT_VIRTUAL_HOST: ${RABBIT_VIRTUAL_HOST} RABBIT_USER_NAME: ${RABBIT_USER_NAME} RABBIT_PASSWORD: ${RABBIT_PASSWORD} PROXY_HOST: ${PROXY_HOST} LOG_LEVEL: ${LOG_LEVEL} DEBUG_INFO: ${DEBUG_INFO} 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: onlyoffice-backup-background-tasks: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-backup-background:${DOCKER_TAG}" container_name: ${BACKUP_BACKGRUOND_TASKS_HOST} healthcheck: <<: *x-healthcheck test: curl --fail http://${SERVICE_BACKUP_BACKGRUOND_TASKS}/health/ || exit 1 onlyoffice-backup: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-backup:${DOCKER_TAG}" container_name: ${BACKUP_HOST} healthcheck: <<: *x-healthcheck test: curl --fail http://${SERVICE_BACKUP}/health/ || exit 1 onlyoffice-clear-events: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-clear-events:${DOCKER_TAG}" container_name: ${CLEAR_EVENTS_HOST} healthcheck: <<: *x-healthcheck test: curl --fail http://${SERVICE_CLEAR_EVENTS}/health/ || exit 1 onlyoffice-files: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-files:${DOCKER_TAG}" container_name: ${FILES_HOST} healthcheck: <<: *x-healthcheck test: curl --fail http://${SERVICE_FILES}/health/ || exit 1 onlyoffice-files-services: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-files-services:${DOCKER_TAG}" container_name: ${FILES_SERVICES_HOST} healthcheck: <<: *x-healthcheck test: curl --fail http://${SERVICE_FILES_SERVICES}/health/ || exit 1 onlyoffice-people-server: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-people-server:${DOCKER_TAG}" container_name: ${PEOPLE_SERVER_HOST} healthcheck: <<: *x-healthcheck test: curl --fail http://${SERVICE_PEOPLE_SERVER}/health/ || exit 1 onlyoffice-socket: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-socket:${DOCKER_TAG}" container_name: ${SOCKET_HOST} expose: - ${SERVICE_PORT} onlyoffice-studio-notify: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio-notify:${DOCKER_TAG}" container_name: ${STUDIO_NOTIFY_HOST} healthcheck: <<: *x-healthcheck test: curl --fail http://${SERVICE_STUDIO_NOTIFY}/health/ || exit 1 onlyoffice-api: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-api:${DOCKER_TAG}" container_name: ${API_HOST} healthcheck: <<: *x-healthcheck test: curl --fail http://${SERVICE_API}/health/ || exit 1 onlyoffice-api-system: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-api-system:${DOCKER_TAG}" container_name: ${API_SYSTEM_HOST} healthcheck: <<: *x-healthcheck test: curl --fail http://${SERVICE_API_SYSTEM}/health/ || exit 1 onlyoffice-studio: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio:${DOCKER_TAG}" container_name: ${STUDIO_HOST} healthcheck: <<: *x-healthcheck test: curl --fail http://${SERVICE_STUDIO}/health/ || exit 1 onlyoffice-ssoauth: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-ssoauth:${DOCKER_TAG}" container_name: ${SSOAUTH_HOST} expose: - ${SERVICE_PORT} - "9834" onlyoffice-doceditor: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-doceditor:${DOCKER_TAG}" container_name: ${DOCEDITOR_HOST} expose: - "5013" healthcheck: <<: *x-healthcheck test: curl --fail http://${SERVICE_DOCEDITOR}/health || exit 1 onlyoffice-login: <<: *x-service-base image: "${REPO}/${DOCKER_IMAGE_PREFIX}-login:${DOCKER_TAG}" container_name: ${LOGIN_HOST} expose: - "5011" healthcheck: <<: *x-healthcheck test: curl --fail http://${SERVICE_LOGIN}/health || exit 1 onlyoffice-proxy: image: "${REPO}/${DOCKER_IMAGE_PREFIX}-proxy:${DOCKER_TAG}" container_name: ${PROXY_HOST} restart: always healthcheck: <<: *x-healthcheck test: nginx -t || exit 1 expose: - "8081" - "8099" - "8092" ports: - 8092:8092 depends_on: - onlyoffice-backup-background-tasks - onlyoffice-backup - onlyoffice-clear-events - onlyoffice-files - onlyoffice-files-services - onlyoffice-people-server - onlyoffice-socket - onlyoffice-studio-notify - onlyoffice-api - onlyoffice-api-system - onlyoffice-studio - onlyoffice-ssoauth - onlyoffice-doceditor - onlyoffice-login environment: - SERVICE_BACKUP=${SERVICE_BACKUP} - SERVICE_FILES=${SERVICE_FILES} - SERVICE_FILES_SERVICES=${SERVICE_FILES_SERVICES} - SERVICE_CLEAR_EVENTS=${SERVICE_CLEAR_EVENTS} - SERVICE_NOTIFY=${SERVICE_NOTIFY} - SERVICE_PEOPLE_SERVER=${SERVICE_PEOPLE_SERVER} - SERVICE_SOCKET=${SERVICE_SOCKET} - SERVICE_STUDIO_NOTIFY=${SERVICE_STUDIO_NOTIFY} - SERVICE_API=${SERVICE_API} - SERVICE_API_SYSTEM=${SERVICE_API_SYSTEM} - SERVICE_STUDIO=${SERVICE_STUDIO} - SERVICE_SSOAUTH=${SERVICE_SSOAUTH} - SERVICE_DOCEDITOR=${SERVICE_DOCEDITOR} - SERVICE_LOGIN=${SERVICE_LOGIN} - SERVICE_HELTHCHECKS=${SERVICE_HELTHCHECKS} - DOCUMENT_CONTAINER_NAME=${DOCUMENT_CONTAINER_NAME} - DOCUMENT_SERVER_URL_EXTERNAL=${DOCUMENT_SERVER_URL_EXTERNAL} - REDIS_CONTAINER_NAME=${REDIS_CONTAINER_NAME} - REDIS_HOST=${REDIS_HOST} - REDIS_PORT=${REDIS_PORT} - SERVICE_PORT=${SERVICE_PORT} volumes: - proxy_log:/var/log/nginx networks: default: name: ${NETWORK_NAME} external: true volumes: proxy_log: app_data: files_data: people_data: