This comprehensive guide provides detailed instructions for building the Smart NVR application container images from source code. Whether you're a developer looking to customize the application or troubleshoot issues, this guide will walk you through the complete build and deployment process.
The Smart NVR application consists of multiple components that work together to provide GenAI-powered video analytics:
- NVR Event Router: Core backend service that processes events and coordinates between services.
- UI Component: Gradio-based web interface for interacting with the system.
- Frigate NVR: Network Video Recorder for object detection and video processing.
- MQTT Broker: Message broker for inter-service communication.
- Redis: In-memory data store for caching and managing rules.
First, clone the repository and navigate to the Smart NVR directory:
git clone https://github.com/open-edge-platform/edge-ai-suites.git
cd edge-ai-suites/metro-ai-suite/smart-nvrThe application provides a build script to simplify the image building process:
./build.shThe build.sh script performs the following operations:
-
Sets Default Values: Uses
nvr-event-router:latestas the default image name and tag -
Configures Proxy Settings: Automatically passes through proxy environment variables if set
-
Builds Docker Image: Creates the Docker image using the Dockerfile in the
docker/directory -
Validates Build: Confirms the image was built successfully
You can customize the build process by setting environment variables:
The application uses registry URL, project name, and tag to build the images.
export REGISTRY_URL=<your-container-registry-url> # e.g. "docker.io/username/"
export PROJECT_NAME=<your-project-name> # e.g. "metro-ai-suite"
export TAG=<your-tag> # e.g. "rc4" or "latest"IMPORTANT: These variables control how image names are constructed. If
REGISTRY_URLis docker.io/username/ andPROJECT_NAMEis metro-ai-suite, an image would be pulled or built as docker.io/username/metro-ai-suite/:tag. The<application-name>is hardcoded in image field of each service in all docker compose files. IfREGISTRY_URLorPROJECT_NAMEare not set, blank string will be used to construct the image name. IfTAGis not set, latest will be used by default.
# Run the build script that takes the build values
./build.shIf you need to include copyleft sources in your build, you can set the following environment variable:
export ADD_COPYLEFT_SOURCES=trueWhen this environment variable is set to true, it allows the Dockerfiles to conditionally include copyleft sources when needed.
- Get Started: Complete the initial setup and configuration steps
- How to Use the Application: Learn about the application's features and functionality
- API Reference: Explore the available REST API endpoints
- Troubleshooting: Find solutions to common deployment issues
- System Requirements: Review hardware and software requirements