# Docker Module - Container image building and management (Nickel-native) # ========================================================================= # Source of truth: Nickel templates in schemas/platform/templates/docker/ # Dockerfiles are GENERATED on-demand, NOT tracked in git # Show detailed docker help @docker-help: echo "๐Ÿณ DOCKER MODULE HELP (Nickel-Native Build System)" echo "==================================================" echo "" echo "This module uses Nickel templates + cargo-chef for optimized Docker builds:" echo "โ€ข Dockerfiles generated on-demand from Nickel schemas" echo "โ€ข 4-stage builds: PLANNER โ†’ CACHER โ†’ BUILDER โ†’ RUNTIME" echo "โ€ข 60-80% build time reduction via dependency caching" echo "โ€ข BuildKit cache modes: local, registry, inline" echo "โ€ข Mode-specific tuning: solo, cicd, enterprise" echo "" echo "SERVICES:" echo " orchestrator - Workflow engine and task queue" echo " control-center - Policy and RBAC management" echo " mcp-server - AI/LLM integration" echo " extension-registry - Plugin management" echo " provisioning-daemon - System daemon" echo " ai-service - AI service integration" echo " rag - Retrieval augmented generation" echo " vault-service - Secret management" echo "" echo "RECIPES:" echo " docker-gen Generate Dockerfiles from Nickel templates" echo " docker-gen-compose Generate docker-compose.build.yml" echo " docker-build SERVICES Build service(s) with auto-generation" echo " docker-build-all Build all services with BuildKit cache" echo " docker-clean-gen Remove generated Dockerfiles" echo " image-list Show available services" echo " image-validate Validate all built images" echo " image-clean Remove all provisioning images" echo "" echo "EXAMPLES:" echo " just docker-gen orchestrator # Generate Dockerfile for orchestrator" echo " just docker-gen-compose # Generate docker-compose.build.yml" echo " just docker-build orchestrator # Build orchestrator (auto-generates Dockerfile)" echo " just docker-build-all # Build all services with parallel BuildKit" echo " just docker-clean-gen # Remove all generated Dockerfiles" echo "" echo "NOTES:" echo " โ€ข Dockerfiles are NOT tracked in git (source = Nickel templates)" echo " โ€ข docker-build auto-generates Dockerfiles before building" echo " โ€ข Change base images in schemas/platform/docker-build.ncl" # Generate Dockerfiles from Nickel templates (on-demand) docker-gen MODE='solo' +SERVICES='all': #!/usr/bin/env bash cd {{provisioning_root}} if [ "{{SERVICES}}" == "all" ]; then echo "๐Ÿ—๏ธ Generating Dockerfiles for all services (mode: {{MODE}})..." {{nu}} scripts/docker-generate-builds.nu all --mode {{MODE}} else echo "๐Ÿ—๏ธ Generating Dockerfiles for: {{SERVICES}} (mode: {{MODE}})..." for service in {{SERVICES}}; do {{nu}} scripts/docker-generate-builds.nu "$service" --mode {{MODE}} done fi # Generate docker-compose.build.yml from Nickel template docker-gen-compose REGISTRY='localhost:5000': #!/usr/bin/env bash cd {{provisioning_root}} echo "๐Ÿ—๏ธ Generating docker-compose.build.yml (registry: {{REGISTRY}})..." {{nu}} scripts/docker-generate-compose.nu --registry {{REGISTRY}} # Build Docker images with auto-generation and BuildKit cache docker-build MODE='solo' REGISTRY='localhost:5000' +SERVICES='': #!/usr/bin/env bash cd {{provisioning_root}} if [ -z "{{SERVICES}}" ]; then echo "๐Ÿณ Building all services (mode: {{MODE}})..." {{nu}} scripts/docker-build.nu --all --mode {{MODE}} --registry {{REGISTRY}} else echo "๐Ÿณ Building service(s): {{SERVICES}} (mode: {{MODE}})..." {{nu}} scripts/docker-build.nu {{SERVICES}} --mode {{MODE}} --registry {{REGISTRY}} fi # Build all services with BuildKit parallel builds docker-build-all MODE='solo' REGISTRY='localhost:5000': #!/usr/bin/env bash cd {{provisioning_root}} echo "๐Ÿณ Building all platform services (mode: {{MODE}})..." {{nu}} scripts/docker-build.nu --all --mode {{MODE}} --registry {{REGISTRY}} # Remove all generated Dockerfiles (not tracked in git) docker-clean-gen: #!/usr/bin/env bash cd {{provisioning_root}} echo "๐Ÿงน Removing generated Dockerfiles..." find platform/crates -name "Dockerfile" -type f -delete rm -f docker-compose.build.yml echo "โœ… Generated files cleaned" # Legacy: Build platform service Docker images (deprecated - use docker-build) build-images +SERVICES='': #!/usr/bin/env bash echo "โš ๏ธ DEPRECATED: Use 'just docker-build' instead" cd {{provisioning_root}} if [ -z "{{SERVICES}}" ]; then {{nu}} scripts/docker-build.nu --all else {{nu}} scripts/docker-build.nu {{SERVICES}} fi # List available service images @image-list: echo "๐Ÿ“‹ Available Platform Services" echo "==============================" echo "" echo "Core Platform Services:" echo " โ€ข orchestrator (Rust) - Workflow engine and task queue" echo " โ€ข control-center (Rust) - Policy and RBAC management" echo " โ€ข mcp-server (Rust) - AI/LLM integration" echo " โ€ข extension-registry (Rust) - Plugin management" echo " โ€ข rag (Rust) - Retrieval augmented generation" echo "" echo "Image Tags:" echo " โ€ข provisioning-orchestrator:latest" echo " โ€ข provisioning-control-center:latest" echo " โ€ข provisioning-mcp-server:latest" echo " โ€ข provisioning-extension-registry:latest" echo " โ€ข provisioning-rag:latest" echo "" echo "Usage: just build-images [service...]" echo " just build-images orchestrator" echo " just build-images orchestrator control-center" # Validate all built Docker images @image-validate: #!/usr/bin/env bash echo "๐Ÿ” Validating platform Docker images..." echo "" SERVICES=("provisioning-orchestrator:latest" \ "provisioning-control-center:latest" \ "provisioning-mcp-server:latest" \ "provisioning-extension-registry:latest" \ "provisioning-rag:latest") VALID=0 INVALID=0 for image in "${SERVICES[@]}"; do if docker image inspect "$image" >/dev/null 2>&1; then echo "โœ… $image" ((VALID++)) else echo "โŒ $image (not found)" ((INVALID++)) fi done echo "" echo "๐Ÿ“Š Validation Summary" echo "====================" echo "Valid: $VALID" echo "Invalid: $INVALID" if [ $INVALID -gt 0 ]; then echo "" echo "Run 'just build-images' to build missing images" exit 1 fi # Remove all provisioning platform images @image-clean: #!/usr/bin/env bash echo "๐Ÿงน Removing provisioning platform Docker images..." IMAGES=("provisioning-orchestrator:latest" \ "provisioning-control-center:latest" \ "provisioning-mcp-server:latest" \ "provisioning-extension-registry:latest" \ "provisioning-rag:latest") for image in "${IMAGES[@]}"; do if docker image inspect "$image" >/dev/null 2>&1; then echo "Removing $image..." docker image rm "$image" || echo "โš ๏ธ Failed to remove $image" fi done echo "โœ… Image cleanup completed" # Show Docker image information @image-info: #!/usr/bin/env bash echo "๐Ÿณ Provisioning Platform Docker Images" echo "======================================" echo "" IMAGES=("provisioning-orchestrator:latest" \ "provisioning-control-center:latest" \ "provisioning-mcp-server:latest" \ "provisioning-extension-registry:latest" \ "provisioning-rag:latest") for image in "${IMAGES[@]}"; do if docker image inspect "$image" >/dev/null 2>&1; then echo "๐Ÿ“ฆ $image" docker image inspect "$image" | jq -r '.[0] | " Created: \(.Created)\n Size: \(.Size) bytes\n OS: \(.Os)/\(.Architecture)"' echo "" fi done if [ $(docker images --filter "reference=provisioning-*" --quiet | wc -l) -eq 0 ]; then echo "โ„น๏ธ No provisioning images found. Run 'just build-images' to build them." fi # Build specific service image [no-cd] build-service SERVICE: #!/usr/bin/env bash cd {{provisioning_root}} echo "๐Ÿณ Building service image: {{SERVICE}}" {{nu}} scripts/build-images.nu {{SERVICE}} # Show Docker system status @docker-status: #!/usr/bin/env bash echo "๐Ÿณ Docker System Status" echo "======================" echo "" if ! command -v docker &> /dev/null; then echo "โŒ Docker is not installed" exit 1 fi echo "Docker version:" docker --version echo "" echo "Docker daemon status:" if docker ps -q >/dev/null 2>&1; then echo "โœ… Docker daemon is running" else echo "โŒ Docker daemon is not running or not accessible" exit 1 fi echo "" echo "Provisioning platform images:" docker images --filter "reference=provisioning-*" | tail -n +2 || echo "None found" echo "" echo "Docker disk usage:" docker system df # Build and verify Docker images @build-verify: just build-images just image-validate echo "โœ… Docker images built and verified"