OCS.io Applications
This section covers the OCS.io Applications setup required for OCS.io deployment.
Basically, you do not need to change anything in the docker-compose-app.yml
file:
version: "3.4"
x-common-spring-env-variables: &common-spring-env-variables
OCS_ENVIRONMENT: ${OCS_ENVIRONMENT}
OCS_PREFIX: ${OCS_PREFIX}
OCS_DEPLOYMENT_ID: ${OCS_DEPLOYMENT_ID}
OCS_DEPLOYMENT_MANAGER: ${OCS_DEPLOYMENT_MANAGER}
OCS_PLATFORM_APP_ID: ${OCS_PLATFORM_APP_ID}
OCS_PLATFORM_API_KEY: ${OCS_PLATFORM_API_KEY}
OCS_PLATFORM_TIME_ZONE: ${OCS_PLATFORM_TIME_ZONE}
OCS_POSTGRES_URL: jdbc:postgresql://${DNS_DB_SERVER}/${POSTGRES_DATABASE}?currentSchema=${POSTGRES_SCHEMA}&ApplicationName=ocs
OCS_POSTGRES_USERNAME: ${POSTGRES_USERNAME}
OCS_POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
OCS_REDIS_URL: ${DNS_CACHE_SERVER}
OCS_REDIS_PORT: ${REDIS_PORT_EXT}
OCS_RABBIT_URL: ${DNS_RABBITMQ}
OCS_RABBIT_PORT: ${RABBIT_PORT_EXT}
OCS_RABBIT_USERNAME: ${RABBIT_USERNAME}
OCS_RABBIT_PASSWORD: ${RABBIT_PASSWORD}
networks:
ocs-app-network:
external: true
services:
# *** App Updater ***
ocs-app-updater:
container_name: ${DNS_OCS_APP_UPDATER}
image: ${REGISTRY}/app-updater:latest
environment:
<<: *common-spring-env-variables
networks:
- ocs-app-network
# *** Config Server ***
ocs-config-server:
container_name: ${DNS_OCS_CONFIG_SERVER}
image: ${REGISTRY}/config-server:latest
depends_on:
- ocs-app-updater
restart: always
environment:
<<: *common-spring-env-variables
SERVER_PORT: ${OCS_CONFIG_SERVER_PORT_INT}
SERVER_DOMAIN_NAME: ${OCS_CONFIG_SERVER_DOMAIN_NAME}
ports:
- "${OCS_CONFIG_SERVER_PORT_EXT}:${OCS_CONFIG_SERVER_PORT_INT}"
networks:
- ocs-app-network
# *** CASM Server ***
ocs-casm-server:
container_name: ${DNS_OCS_CASM_SERVER}
image: ${REGISTRY}/casm-server:latest
depends_on:
- ocs-app-updater
restart: always
environment:
<<: *common-spring-env-variables
SERVER_PORT: ${OCS_CASM_SERVER_PORT_INT}
SERVER_DOMAIN_NAME: ${OCS_CASM_SERVER_DOMAIN_NAME}
ports:
- "${OCS_CASM_SERVER_PORT_EXT}:${OCS_CASM_SERVER_PORT_INT}"
networks:
- ocs-app-network
# *** Billing & Invoicing Server ***
ocs-billing-server:
container_name: ${DNS_OCS_BILLING_SERVER}
image: ${REGISTRY}/billing-server:latest
depends_on:
- ocs-app-updater
restart: always
environment:
<<: *common-spring-env-variables
SERVER_PORT: ${OCS_BILLING_SERVER_PORT_INT}
ports:
- "${OCS_BILLING_SERVER_PORT_EXT}:${OCS_BILLING_SERVER_PORT_INT}"
networks:
- ocs-app-network
# *** Data Extractor ***
ocs-data-extractor:
container_name: ${DNS_OCS_DATA_EXTRACTOR}
image: ${REGISTRY}/data-extractor:latest
depends_on:
- ocs-app-updater
restart: always
environment:
<<: *common-spring-env-variables
SERVER_PORT: ${OCS_DATA_EXTRACTOR_PORT_INT}
OCS_NFS_ROOT: ${FS_OCS_DATA}
ports:
- "${OCS_DATA_EXTRACTOR_PORT_EXT}:${OCS_DATA_EXTRACTOR_PORT_INT}"
networks:
- ocs-app-network
# *** Data Extractor ***
ocs-edr-processor:
container_name: ${DNS_OCS_EDR_PROCESSOR}
image: ${REGISTRY}/edr-processor:latest
depends_on:
- ocs-app-updater
restart: always
environment:
<<: *common-spring-env-variables
SERVER_PORT: ${OCS_EDR_PROCESSOR_PORT_INT}
OCS_NFS_ROOT: ${FS_OCS_DATA}
ports:
- "${OCS_EDR_PROCESSOR_PORT_EXT}:${OCS_EDR_PROCESSOR_PORT_INT}"
networks:
- ocs-app-network
Now, let’s break down each component of the OCS.io Applications:
Spring Boot
Following section is essential for correct running of Java Spring Boot based applications:
x-common-spring-env-variables: &common-spring-env-variables
OCS_ENVIRONMENT: ${OCS_ENVIRONMENT}
OCS_PREFIX: ${OCS_PREFIX}
OCS_DEPLOYMENT_ID: ${OCS_DEPLOYMENT_ID}
OCS_DEPLOYMENT_MANAGER: ${OCS_DEPLOYMENT_MANAGER}
OCS_PLATFORM_APP_ID: ${OCS_PLATFORM_APP_ID}
OCS_PLATFORM_API_KEY: ${OCS_PLATFORM_API_KEY}
OCS_PLATFORM_TIME_ZONE: ${OCS_PLATFORM_TIME_ZONE}
OCS_CONN_POSTGRES_URL: jdbc:postgresql://${DNS_DB_SERVER}/${POSTGRES_DATABASE}?currentSchema=${POSTGRES_SCHEMA}&ApplicationName=ocs
OCS_CONN_POSTGRES_USERNAME: ${POSTGRES_USERNAME}
OCS_CONN_POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
OCS_CONN_REDIS_URL: ${DNS_CACHE_SERVER}
OCS_CONN_REDIS_PORT: ${REDIS_PORT_EXT}
OCS_CONN_RABBIT_URL: ${DNS_RABBITMQ}
OCS_CONN_RABBIT_PORT: ${RABBIT_PORT_EXT}
OCS_CONN_RABBIT_USERNAME: ${RABBIT_USERNAME}
OCS_CONN_RABBIT_PASSWORD: ${RABBIT_PASSWORD}
All listed attributes must be populate from the environment variables.
Application Updater
Application Updater is component responsible for applying DB changes and configuration to the OCS.io Database.
It is standard Java Spring Boot application, hence passing common-spring-env-variables
we explained in previous step is mandatory.
# *** App Updater ***
ocs-app-updater:
container_name: ${DNS_OCS_APP_UPDATER}
image: ${REGISTRY}/app-updater:latest
environment:
<<: *common-spring-env-variables
networks:
- ocs-app-network
Difference from other modules is, that this Service is not running as a daemon and hence there is no restart: always
flag.
Java Applications
Following there is typical Java Spring Boot based service, in this case OCS Configuration Server:
# *** Config Server ***
ocs-config-server:
container_name: ${DNS_OCS_CONFIG_SERVER}
image: ${REGISTRY}/config-server:latest
depends_on:
- ocs-app-updater
restart: always
environment:
<<: *common-spring-env-variables
SERVER_PORT: ${OCS_CONFIG_SERVER_PORT_INT}
ports:
- "${OCS_CONFIG_SERVER_PORT_EXT}:${OCS_CONFIG_SERVER_PORT_INT}"
networks:
- ocs-app-network
Service depends on ocs-app-updater
service explained in previous chapter. Again, passing of common-spring-env-variables
is mandatory.
As service is running as a daemon, it require restart: always
to be set.