# Development override – real services, no hardware needed. # Usage: docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d # Mac audio output: make mac-audio # Spotify Connect: make spotify services: signalk: environment: - SIGNALK_DEMO=true # Built-in demo NMEA data generator librespot: build: context: ./docker/librespot dockerfile: Dockerfile ports: - "57621:57621/udp" - "57621:57621/tcp" command: [ "--name", "${SPOTIFY_NAME:-Bordanlage} (Dev)", "--bitrate", "${SPOTIFY_BITRATE:-320}", "--backend", "pipe", "--device", "/tmp/audio/spotify.pcm", "--zeroconf-port", "57621" ] volumes: - pipes:/tmp/audio networks: - bordanlage restart: unless-stopped # Zones: real snapclient containers with null player (v0.35+, URI format) zone-salon: command: ["--hostID", "zone-salon", "--player", "file:filename=null", "tcp://snapserver"] zone-cockpit: command: ["--hostID", "zone-cockpit", "--player", "file:filename=null", "tcp://snapserver"] zone-bug: command: ["--hostID", "zone-bug", "--player", "file:filename=null", "tcp://snapserver"] zone-heck: command: ["--hostID", "zone-heck", "--player", "file:filename=null", "tcp://snapserver"] # Vite dev server with HMR — uses Dockerfile.dev to avoid overwriting node:20-alpine dashboard: build: context: ./dashboard dockerfile: Dockerfile.dev entrypoint: [] working_dir: /app volumes: - ./dashboard:/app - /app/node_modules command: ["sh", "-c", "npm install --legacy-peer-deps && npm run dev -- --host 0.0.0.0 --port 8090"] ports: - "8090:8090" environment: - VITE_SNAPCAST_HOST=localhost - VITE_SIGNALK_HOST=localhost - VITE_MOPIDY_HOST=localhost - VITE_JELLYFIN_HOST=localhost - VITE_USE_MOCK=false # FALSE = Nutze echte Services (Spotify, AirPlay, Mopidy)