Using docker-compose
, bring up a Senzing stack
using RabbitMQ and a MySQL database.
This repository illustrates a reference implementation of Senzing using RabbitMQ as the queue and MySQL as the underlying database.
The instructions show how to set up a system that:
- Reads JSON lines from a file on the internet and sends each JSON line to a message queue via the Senzing
stream-producer.
- In this implementation, the queue is RabbitMQ.
- Reads messages from the queue and inserts into Senzing via the Senzing
stream-loader.
- In this implementation, Senzing keeps its data in a MySQL database.
- Reads information from Senzing via Senzing API Server server.
- Views resolved entities in a web app.
The following diagram shows the relationship of the Docker containers in this Docker composition. Arrows represent data flow.
At Senzing, we strive to create GitHub documentation in a "don't make me think" style. For the most part, instructions are copy and paste. Icons are used to signify additional actions by the user. If the instructions are not clear, please let us know by opening a new Documentation issue describing where we can improve. Now on with the show...
- Space: This repository and demonstration require 7 GB free disk space.
- Time: Budget 2 hours to get the demonstration up-and-running, depending on CPU and network speeds.
- Background knowledge: This repository assumes a working knowledge of:
- docker - Minimum version: 20.10.16
- docker-compose - Minimum version: 1.29.0
- Create MySQL compatible Docker images.
-
✏️ Specify a new directory to hold demonstration artifacts on the local host. Example:
export SENZING_DEMO_DIR=~/my-senzing
⚠️ macOS - File sharing must be enabled forSENZING_DEMO_DIR
.⚠️ Windows - File sharing must be enabled forSENZING_DEMO_DIR
.
-
Set environment variables. Example:
export MYSQL_DIR=${SENZING_DEMO_DIR}/mysql export RABBITMQ_DIR=${SENZING_DEMO_DIR}/rabbitmq export SENZING_GID=$(id -g) export SENZING_UID=$(id -u) export SENZING_VAR_DIR=${SENZING_DEMO_DIR}/var
-
Create directories. Example:
mkdir -p ${MYSQL_DIR} ${RABBITMQ_DIR} ${SENZING_VAR_DIR} chmod -R 777 ${SENZING_DEMO_DIR}
-
Get versions of Docker images. Example:
curl -X GET \ --output ${SENZING_DEMO_DIR}/docker-versions-stable.sh \ https://raw.githubusercontent.com/Senzing/knowledge-base/main/lists/docker-versions-stable.sh source ${SENZING_DEMO_DIR}/docker-versions-stable.sh
-
Download
docker-compose.yaml
. Example:curl -X GET \ --output ${SENZING_DEMO_DIR}/docker-compose.yaml \ "https://raw.githubusercontent.com/senzing-garage/docker-compose-demo/main/resources/mysql/docker-compose-rabbitmq-mysql.yaml"
-
Bring up Senzing docker-compose stack. Example:
cd ${SENZING_DEMO_DIR} sudo --preserve-env docker-compose up
-
Allow time for the components to be downloaded, start, and initialize.
- There will be errors in some Docker logs as they wait for dependent services to become available.
docker-compose
isn't the best at orchestrating Docker container dependencies.
- There will be errors in some Docker logs as they wait for dependent services to become available.
Once the docker-compose formation is running, different aspects of the formation can be viewed.
Username and password for the following sites were either passed in as environment variables or are the default values seen in docker-compose-rabbitmq-mysql.yaml.
- A good tool to monitor individual Docker logs is Portainer. When running, Portainer is viewable at localhost:9170.
- Senzing Entity Search WebApp is viewable at localhost:8251.
- See additional tips for working with Senzing Entity Search WebApp.
The web-based Senzing X-term can be used to run Senzing command-line programs.
- Senzing X-term is viewable at localhost:8254.
- See additional tips for working with Senzing X-Term.
Instructions to use the senzing/sshd container are viewable in the senzing/docker-sshd repository
View results from Senzing REST API server. The server supports the Senzing REST API.
- The OpenApi Editor with Servers value of http://localhost:8250 can be used to try the Senzing REST API.
- Example Senzing REST API request: localhost:8250/heartbeat
- See additional tips for working with Senzing API server.
- RabbitMQ is viewable at
localhost:15672.
- Defaults: username:
user
password:bitnami
- Defaults: username:
- See additional tips for working with RabbitMQ.
- MySQL is viewable at
localhost:9173.
- Defaults: username:
g2
password:g2
- Defaults: username:
- See additional tips for working with MySQL.
When the docker-compose formation is no longer needed, it can be brought down and directories can be deleted.
-
Bring down Docker formation. Example:
cd ${SENZING_DEMO_DIR} sudo docker-compose down
-
Remove directories from host system. Example:
rm -rf ${SENZING_DEMO_DIR:-/tmp/nowhere/for/safety}
The following topics discuss variations to the basic docker-compose demonstration.
This docker formation brings up the following docker containers:
- bitnami/rabbitmq
- mysql
- phpmyadmin/phpmyadmin
- senzing/console
- senzing/entity-web-search-app
- senzing/redoer
- senzing/senzing-poc-server
- senzing/senzing-tools
- senzing/sshd
- senzing/stream-loader
- senzing/stream-producer
- senzing/xterm
Configuration values specified by environment variable or command line parameter.