Micro-service for DIAL code management
This readme file contains the instruction to set up and run the DIAL-service in local machine.
- OpenSearch
- Redis
- Cassandra
mkdir -p ~/sunbird-dbs/neo4j ~/sunbird-dbs/cassandra ~/sunbird-dbs/redis ~/sunbird-dbs/es ~/sunbird-dbs/kafka
export sunbird_dbs_path=~/sunbird-dbsdocker run --name sunbird_es -d -p 9200:9200 -p 9600:9600 \
-v $sunbird_dbs_path/es/data:/usr/share/opensearch/data \
-v $sunbird_dbs_path/es/logs:/usr/share/opensearch/logs \
-e "discovery.type=single-node" \
-e "plugins.security.disabled=true" \
opensearchproject/opensearch:2.19.5
--name - Name your container (avoids generic id)
-p - Specify container ports to expose (9200 for REST API, 9600 for Performance Analyzer)
-d - This detaches the container to run in the background, meaning we can access the container separately and see into all of its processes.
-v - These lines define volumes we want to bind in our local directory structure so we can access certain files locally.
--env - Set config as environment variables for OpenSearch
- we need to get the redis image from docker hub using the below command.
docker pull redis:6.0.8 - We need to create the redis instance, By using the below command we can create the same and run in a container.
docker run --name sunbird_redis -d -p 6379:6379 redis:6.0.8- To SSH to redis docker container, run the below command
docker exec -it sunbird_redis bash- we need to get the cassandra image and can be done using the below command.
docker pull cassandra:3.11.8 - We need to create the cassandra instance, By using the below command we can create the same and run in a container.
docker run --name sunbird_cassandra -d -p 9042:9042 \
-v $sunbird_dbs_path/cassandra/data:/var/lib/cassandra \
-v $sunbird_dbs_path/cassandra/logs:/opt/cassandra/logs \
-v $sunbird_dbs_path/cassandra/backups:/mnt/backups \
--network bridge cassandra:3.11.8 For network, we can use the existing network or create a new network using the following command and use it.
docker network create sunbird_db_network- To start cassandra cypher shell run the below command.
docker exec -it sunbird_cassandra cqlsh- To ssh to cassandra docker container, run the below command.
docker exec -it sunbird_cassandra /bin/bash- Load seed data to cassandra using the instructions provided in the link
- Kafka stores information about the cluster and consumers into Zookeeper. ZooKeeper acts as a coordinator between them. we need to run two services(zookeeper & kafka), Prepare your docker-compose.yml file using the following reference.
version: '3'
services:
zookeeper:
image: 'wurstmeister/zookeeper:latest'
container_name: zookeeper
ports:
- "2181:2181"
environment:
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:2181
kafka:
image: 'wurstmeister/kafka:2.11-1.0.1'
container_name: kafka
ports:
- "9092:9092"
environment:
- KAFKA_BROKER_ID=1
- KAFKA_LISTENERS=PLAINTEXT://:9092
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
depends_on:
- zookeeper - Go to the path where docker-compose.yml placed and run the below command to create and run the containers (zookeeper & kafka).
docker-compose -f docker-compose.yml up -d- To start kafka docker container shell, run the below command.
docker exec -it kafka shGo to path /opt/kafka/bin, where we will have executable files to perform operations(creating topics, running producers and consumers, etc). Example:
kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test_topic - Go to the path: /sunbird-dial-service and run the below maven command to build the application.
mvn clean install -DskipTests- Go to the path: /sunbird-dial-service and run the below maven command to run the netty server.
mvn play2:run- Using the below command we can verify whether the databases(neoj,redis & cassandra) connection is established or not. If all connections are good, health is shown as 'true' otherwise it will be 'false'.
curl http://localhost:9000/health- 'jsonld-schema' folder is used to save context and json-ld files.
- For implementing custom context, you can create a folder under 'jsonld-schema'. Folder should contain 'context.json' file. Specify the folder name in 'jsonld.type' attribute in 'application.conf' file for application to refer to new context.
- 'contextValidation.json' file is optional. If available, context data input validation will happen when dial code update v2 API call is made with 'contextInfo'.
- Reference of 'sb' vocabulary (schema.jsonld) in the custom 'context.json' is a must.
To ensure the GitHub Actions workflows in this repository function correctly, the following prerequisites must be met:
-
Secrets Configuration:
-
Ensure the secrets are configured in your GitHub repository, depending on the value of
REGISTRY_PROVIDER. The workflow will push the image to the respective container registry if the required credentials are provided. -
Note: If No REGISTRY_PROVIDER is provided the image will be pushed to GHCR.
REGISTRY_PROVIDER: Set togcpGCP_SERVICE_ACCOUNT_KEY: Base64-encoded service account key for GCP.REGISTRY_NAME: GCP registry name (e.g.,asia-south1-docker.pkg.dev).REGISTRY_URL: URL of the GCP container registry (e.g.,asia-south1-docker.pkg.dev/<project_id>/<repository_name>).
REGISTRY_PROVIDER: Set todockerhubREGISTRY_USERNAME: DockerHub username.REGISTRY_PASSWORD: DockerHub password.REGISTRY_NAME: DockerHub registry name (e.g.,docker.io).REGISTRY_URL: URL of the DockerHub registry (e.g.,docker.io/<username>).
REGISTRY_PROVIDER: Set toazureREGISTRY_USERNAME: ACR username (service principal or admin username).REGISTRY_PASSWORD: ACR password (service principal secret or admin password).REGISTRY_NAME: ACR registry name (e.g.,myregistry.azurecr.io).REGISTRY_URL: URL of the ACR registry (e.g.,myregistry.azurecr.io).
REGISTRY_PROVIDER: Set to any value other than above (default is GHCR)- No additional secrets are required. The workflow uses the built-in
GITHUB_TOKENprovided by GitHub Actions for authentication.
Ensure these secrets are added to the repository settings under Settings > Secrets and variables > Actions. By ensuring these prerequisites are met, the workflows in this repository will execute successfully.
-