Stage 04: Service Docker Images
Stage 04 builds Docker images for all platform services (30+ images) and pushes them to Azure Container Registry. Stage 04a optionally syncs images to tenant-specific registries.
Source files: scripts/stages/04-build-service-images.sh, scripts/stages/04a-sync-tenant-images.sh
Images Built
Control Plane (8 images)
iam-service, tenant-service, config-service, audit-service, notification-service, billing-service, platform-registry, observability-api
Data Plane Java (6 images)
query-engine, catalog-service, semantic-layer, bi-service, data-plane-agent, governance-service
Data Plane Python (7 images)
ai-service, ml-service, data-quality-service, pipeline-service, ontology-service, ops-agent-service, infra-optimizer
Data Plane Node.js (1 image)
render-service
Frontend (7 images)
bi-workbench, ml-workbench, data-workbench, agentic-workbench, control-plane-ui, data-plane-ui, ops-workbench
Build and Push
# Build each service image
docker build \
--tag ${ACR_URL}/matih/${service}:${IMAGE_TAG} \
--tag ${ACR_URL}/matih/${service}:latest \
--build-arg BUILD_DATE="$(date -u +'%Y-%m-%dT%H:%M:%SZ')" \
--build-arg VERSION="${IMAGE_TAG}" \
${service_path}
# Push to ACR
docker push ${ACR_URL}/matih/${service}:${IMAGE_TAG}
docker push ${ACR_URL}/matih/${service}:latestTenant Image Sync (04a)
For multi-tenant deployments where each tenant has its own ACR:
# Sync images from platform ACR to tenant ACR
az acr import \
--name ${TENANT_ACR} \
--source ${PLATFORM_ACR_URL}/matih/${service}:${IMAGE_TAG} \
--image matih/${service}:${IMAGE_TAG}Dependencies
- Requires:
03-build-commons(commons libraries must be available) - Required by:
08-control-plane-services,09-control-plane-frontend,15a-matih-operator,16-data-plane-services,17-data-plane-frontend
Dependency Verification
# Check ACR for a representative service image
az acr repository show --name "${ACR_NAME}" \
--image "matih/iam-service:latest"