# Base stack: the parking SERVER (API + SPA) + the VISION (ANPR) service. Branch-aware via # ${REGISTRY}/${TAG} — a deploy on `dev` pulls :dev, on `main` pulls :main. Use an env # override file for the environment: docker-compose.dev.yml (build locally, stub recognizer) # or docker-compose.prod.yml (pull pinned images, fast_alpr). See # wiki/decisions/container-deployment.md. # # local dev : docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build # prod : REGISTRY=… TAG=main docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d services: server: image: ${REGISTRY:-git.infra.msai.al/mca/parking_solution}/parking-server:${TAG:-dev} restart: unless-stopped environment: DATABASE_URL: /data/parking.sqlite # Reach the vision service over the private compose network by service name. VISION_URL: http://vision:8089 # JWT signing secret MUST be provided at deploy (no insecure default — see auth.ts). JWT_SECRET: ${JWT_SECRET:?set JWT_SECRET in the env/.env} volumes: - parking-data:/data depends_on: vision: condition: service_started networks: - parking vision: image: ${REGISTRY:-git.infra.msai.al/mca/parking_solution}/parking-vision:${TAG:-dev} restart: unless-stopped environment: # Engine: stub (no models) by default; prod override sets fast_alpr. VISION_RECOGNIZER: ${VISION_RECOGNIZER:-stub} networks: - parking volumes: parking-data: networks: parking: driver: bridge