services: api: build: context: ./camera-management-api dockerfile: Dockerfile working_dir: /app volumes: - ./camera-management-api:/app - /mnt/nfs_share:/mnt/nfs_share - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro environment: - PYTHONUNBUFFERED=1 - LD_LIBRARY_PATH=/usr/local/lib:/lib:/usr/lib - PYTHONPATH=/app:/app/camera_sdk - TZ=America/New_York command: > sh -lc " apt-get update && apt-get install -y libusb-1.0-0-dev; # Install camera SDK if not already installed if [ ! -f /lib/libMVSDK.so ] && [ -f 'camera_sdk/linuxSDK_V2.1.0.49(250108)/install.sh' ]; then echo 'Installing camera SDK...'; cd 'camera_sdk/linuxSDK_V2.1.0.49(250108)'; chmod +x install.sh; ./install.sh; cd /app; echo 'Camera SDK installed successfully'; else echo 'Camera SDK already installed or install script not found'; fi; # Install Python dependencies if [ -f requirements.txt ]; then pip install --no-cache-dir -r requirements.txt; else pip install --no-cache-dir -e .; fi; # Start the application python main.py --config config.compose.json " network_mode: host web: image: node:20-alpine working_dir: /app env_file: - ./management-dashboard-web-app/.env volumes: - ./management-dashboard-web-app:/app environment: - CHOKIDAR_USEPOLLING=true - TZ=America/New_York command: > sh -lc " npm install; npm run dev -- --host 0.0.0.0 --port 8080 " # Ensure the web container can resolve host.docker.internal on Linux extra_hosts: - "host.docker.internal:host-gateway" ports: - "8080:8080" video-remote: image: node:20-alpine working_dir: /app environment: - CHOKIDAR_USEPOLLING=true - TZ=America/New_York - VITE_MEDIA_API_URL=http://exp-dash:8090 - VITE_VISION_API_URL=http://exp-dash:8000 volumes: - ./video-remote:/app command: > sh -lc " npm install; npm run dev:watch " extra_hosts: - "host.docker.internal:host-gateway" ports: - "3001:3001" media-api: build: context: ./media-api dockerfile: Dockerfile environment: - MEDIA_VIDEOS_DIR=/mnt/nfs_share - MEDIA_THUMBS_DIR=/mnt/nfs_share/.thumbnails volumes: - /mnt/nfs_share:/mnt/nfs_share ports: - "8090:8090" mediamtx: image: bluenviron/mediamtx:latest volumes: - ./mediamtx.yml:/mediamtx.yml:ro - /mnt/nfs_share:/mnt/nfs_share:ro ports: - "8554:8554" # RTSP - "8889:8889" # WebRTC HTTP API - "8189:8189" # WebRTC UDP