Deployment

Docker Compose

The recommended deployment method runs all services as Docker containers.

Full Stack

cd redirect
docker compose up -d

This starts:

Management API

cd api
docker compose up -d

Starts the .NET API and its PostgreSQL database.

UI

cd ui
docker compose up -d

Starts the dashboard and landing page. This compose file includes the redirect compose file via the include directive.

Service Dependencies

click-router         → mongo, redis, clickhouse, fluvio (topics), rabbitmq, domains
click-router-api     → mongo, redis, rabbitmq
click-tracker        → redis, fluvio (topics)
click-aggregator     → clickhouse, fluvio (topics)
click-aggregator-api → clickhouse (after migrations)
route-verifier       → mongo, rabbitmq, gglsbl-rest
route-icon-worker    → rabbitmq, minio
domain-verifier      → mongo, rabbitmq
domains              → (standalone)
management-api       → postgresql, elasticsearch, click-router-api, click-aggregator-api
dashboard            → management-api

Environment Configuration

Rust Services

Configuration is loaded from TOML files in each service’s config/ directory. The APP_RUN_MODE environment variable selects the profile:

Docker containers default to APP_RUN_MODE=production.

Management API

Configured via appsettings.json and environment variables:

Variable Description
ConnectionStrings__DefaultConnection PostgreSQL connection string
Keycloak__Authority Keycloak realm URL
Keycloak__Audience JWT audience
ApiSettings__ClickRouterApi__BaseUrl Click Router API URL
ApiSettings__ClickAggregatorApi__BaseUrl Click Aggregator API URL

Docker Images

Multi-stage builds minimize image sizes:

Health Checks

All services expose health endpoints. Docker Compose healthchecks monitor service status automatically:

make ps    # Show service status and health
make logs  # Tail service logs

Networking

All services share the shortas-net Docker bridge network. Inter-service communication uses container hostnames (e.g., mongo, clickhouse, click-router-api).