Skip to main content
Engineering
What this does: Runs the entire forecasting platform as 20 containerized services with a single command — providing enterprise-grade reliability, monitoring, and scaling without complex server management.

Containerization Strategy

The entire system is containerized using Docker, with Docker Compose orchestrating a 20-service multi-container environment across 5 functional groups.

Service Groups

Networking

All containers share a single bridge network defined in docker-compose.yml:
docker-compose.yml
Services communicate using Docker DNS (e.g., the UI calls http://model-server:8000).

Resource Constraints

All services have CPU and memory limits defined to prevent resource contention:

Environment Variables

Key environment variables (set via .env file):

Optimization

We use a Multi-Stage Build strategy in Dockerfile.model-server.ultra-optimized to ensure fast builds and small images:
  1. Cache Mounts: Uses --mount=type=cache,target=/root/.cache/pip to speed up dependency installation by 40–50%.
  2. Layer Separation: Copies requirements files before source code to maximize Docker layer caching.
  3. Non-Root User: Runs as appuser for security compliance.

MinIO Buckets

The createbuckets init container creates the following S3 buckets on first startup:

Environment Variables

Complete reference for all environment variables used across services.

Inference & Serving

FastAPI model serving layer that runs inside the model-server container.