Core containers and their roles
|
Container |
Role |
|
Kafka |
Message/event broker for asynchronous operations. |
|
Zookeeper |
Dependency for Kafka, responsible for coordination and maintaining metadata. |
|
NGINX |
Reverse proxy and entry point, routes all external requests to the appropriate services. |
|
Solr |
The search database engine itself stores and manages indexes, enabling full-text search. |
|
Solr Service |
AcceleratorKMS-specific microservice that integrates Solr into workflows, handling search and indexing. |
|
Outbox Monitor |
Monitors the application's database for new messages/events and sends them to Kafka. |
|
Service Monitor |
Tracks the health and availability of all AcceleratorKMS services. |
How it works
-
All services are defined in the docker-compose.yml file.
-
The .env file stores database connection strings and other environment variables.
-
Kafka works in tandem with Zookeeper, and all dependencies are declared in the configuration.
Services such as Solr, Kafka, and NGINX are critical to the system's operation.
-
NGINX receives all incoming network requests and routes them based on rules defined in nginx.conf.
Example routing:
-
A request to /services/content/search is forwarded to the Solr Service container.
-
A request to /services/status is routed to the Service Monitor.
-
All routing rules are pre-configured in the nginx.conf file within the NGINX container.
Docker volumes: Persistence and Configuration
In the AKMS Docker setup, container images are treated as static:
-
No files are manually copied into containers.
-
No files are edited inside containers.
-
Configuration is handled via environment variables (e.g., connection strings).
Volume Creation
-
Volumes are defined in the docker-compose.yml file or created automatically by Docker.
-
No manual folder creation is required on the local file system.
Volumes in AKMS Services
|
Service |
Uses Volume For |
Persistence Required? |
|
Solr |
Index storage for full-text search |
Yes |
|
Zookeeper |
State and coordination data |
Yes |
|
Kafka |
Topic queues and in-flight messages |
Yes |
Docker Network
-
A dedicated Docker network named akms-internal is created via Docker Compose.
-
All services communicate within this internal network.
-
Only NGINX exposes ports to the host; all other services remain internal.
To connect from a container to a service running on the host (e.g., 'SQL Server'):
-
Identify the host service you need to access (e.g., SQL Server).
-
From inside the container, use the special hostname:
host.docker.internal
This bridges the container to the host machine.
Runtime Behavior and Lifecycle
-
AKMS services perform dependency checks on startup.
-
Services may take up to a minute to fully initialize and be ready to receive traffic.
-
Solr reindexes content if it detects outdated or missing index files:
-
Deletes existing index
-
Pulls statements from the database
-
Fully rebuilds the text search index
-