Fix Docker Compose for Mac dev mode

- Replace all ghcr.io images (blocked without auth) with local Dockerfiles:
  snapserver/snapclient from debian:bookworm-slim,
  mopidy from debian:bookworm-slim + Python/GStreamer,
  librespot disabled in dev (v0.8.0 has vergen dep bug)
- Fix duplicate 'image' and 'version' keys in compose files
- Dev mode: zones + librespot use alpine dummy containers
- Dashboard dev: use upstream node:20-alpine directly (no custom build)
- Port changed to 8090 (8080 taken by Supabase)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-26 15:12:20 +01:00
parent 77123a0df5
commit 67b9c2ba92
8 changed files with 1765 additions and 56 deletions

View File

@@ -1,5 +1,3 @@
version: "3.9"
# Production docker-compose for boat deployment.
# For development use: docker compose -f docker-compose.yml -f docker-compose.dev.yml up
@@ -42,23 +40,19 @@ services:
# ─── Audio Sources ─────────────────────────────────────────────────────────
librespot:
image: ghcr.io/librespot-org/librespot:latest
build: ./docker/librespot
restart: unless-stopped
# On Linux (boat): use host network for mDNS/Spotify discovery
# network_mode: host
ports:
- "57621:57621/udp" # Spotify zeroconf discovery
- "57621:57621/tcp"
environment:
- SPOTIFY_NAME=${SPOTIFY_NAME:-Bordanlage}
- SPOTIFY_BITRATE=${SPOTIFY_BITRATE:-320}
command: >
--name "${SPOTIFY_NAME:-Bordanlage}"
--bitrate ${SPOTIFY_BITRATE:-320}
--backend pipe
--device /tmp/audio/spotify.pcm
--zeroconf-port 57621
--cache-size-limit ${SPOTIFY_CACHE_SIZE:-1024}
volumes:
- pipes:/tmp/audio
networks:
@@ -114,7 +108,7 @@ services:
# ─── Multiroom Audio ───────────────────────────────────────────────────────
snapserver:
image: ghcr.io/badaix/snapcast:latest
build: ./docker/snapserver
restart: unless-stopped
ports:
- "1704:1704" # Snapcast protocol
@@ -131,41 +125,41 @@ services:
- bordanlage
zone-salon:
image: ghcr.io/badaix/snapcast:latest
build: ./docker/snapclient
restart: unless-stopped
depends_on:
- snapserver
# On boat: add --soundcard hw:0,0 and device /dev/snd
# devices:
# - /dev/snd:/dev/snd
command: snapclient --host snapserver --hostID zone-salon --player null
command: ["snapclient", "--host", "snapserver", "--hostID", "zone-salon", "--player", "null"]
networks:
- bordanlage
zone-cockpit:
image: ghcr.io/badaix/snapcast:latest
build: ./docker/snapclient
restart: unless-stopped
depends_on:
- snapserver
command: snapclient --host snapserver --hostID zone-cockpit --player null
command: ["snapclient", "--host", "snapserver", "--hostID", "zone-cockpit", "--player", "null"]
networks:
- bordanlage
zone-bug:
image: ghcr.io/badaix/snapcast:latest
build: ./docker/snapclient
restart: unless-stopped
depends_on:
- snapserver
command: snapclient --host snapserver --hostID zone-bug --player null
command: ["snapclient", "--host", "snapserver", "--hostID", "zone-bug", "--player", "null"]
networks:
- bordanlage
zone-heck:
image: ghcr.io/badaix/snapcast:latest
build: ./docker/snapclient
restart: unless-stopped
depends_on:
- snapserver
command: snapclient --host snapserver --hostID zone-heck --player null
command: ["snapclient", "--host", "snapserver", "--hostID", "zone-heck", "--player", "null"]
networks:
- bordanlage