Build from Source#

This guide covers building Docker images locally instead of pulling them from the registry.


Prerequisites#

  • Docker 24.0+ and Docker Compose V2+

  • Git

docker --version
docker compose version

Repository Structure#

dine-in/
├── src/
│   ├── app.py                        # Gradio UI
│   ├── api.py                        # FastAPI REST endpoints
│   ├── main.py                       # Launcher (API + Gradio)
│   ├── config.py                     # Configuration manager
│   └── services/
│       ├── vlm_client.py             # OVMS VLM client
│       ├── semantic_client.py        # Semantic matching client
│       ├── validation_service.py     # Validation orchestration
│       └── benchmark_service.py      # Benchmark mode
├── configs/
│   ├── orders.json                   # Test order manifests
│   └── inventory.json               # Known menu items
├── images/                          # Test plate images (user-supplied)
├── results/                         # Benchmark output
├── docker-compose.yml
├── Dockerfile                       # python:3.13-slim base
├── Makefile
└── requirements.txt

Building Images#

Build All Services#

# Pull images from registry (default)
make build

# Build the dine-in image locally from source
make build REGISTRY=false

make build REGISTRY=false builds intel/order-accuracy-dine-in:2026.0.0 from the local Dockerfile.

ovms-vlm, semantic-service, and metrics-collector are always pulled from their registries — they have no local build context.

Build a Custom Tag#

make build REGISTRY=false TAG=my-custom-tag

Rebuild Without Cache#

docker compose build --no-cache

Model Preparation#

Before starting services, download and export the VLM model:

cd ../ovms-service
./setup_models.sh --app dine-in
cd ../dine-in

Start Services#

make up REGISTRY=false

Verify:

make test-api
curl http://localhost:8083/health

Troubleshooting#

Build Fails (network / pip)#

docker compose build --no-cache

GPU Not Detected#

sudo usermod -aG render $USER
# Log out and back in, then restart
make down && make up