services: soundtouch-service: image: ghcr.io/gesellix/bose-soundtouch:latest # build: . container_name: soundtouch-service # Linux only, required for discovery. Swarm requires host network at the task level. # network_mode: host ports: - "8000:8000" - "8443:8443" networks: - soundtouch-test-net environment: - PORT=8000 - HTTPS_PORT=8443 - DATA_DIR=/app/data - LOG_PROXY_BODY=false - REDACT_PROXY_LOGS=true - RECORD_INTERACTIONS=true - DISCOVERY_INTERVAL=5m - SERVER_URL=http://${SOUNDTOUCH_HOSTNAME:-soundtouch.local}:8000 - HTTPS_SERVER_URL=https://${SOUNDTOUCH_HOSTNAME:-soundtouch.local}:8443 volumes: - soundtouch-data:/app/data # Use host volume for local development if preferred: # - ./data:/app/data restart: unless-stopped deploy: replicas: 1 restart_policy: condition: on-failure resources: limits: cpus: '0.50' memory: 512M reservations: cpus: '0.25' memory: 128M spotify-mock: image: golang:1.26.2-alpine container_name: spotify-mock working_dir: /app volumes: - .:/app command: go run ./cmd/mock-spotify/main.go -port 8080 ports: - "8081:8080" networks: - soundtouch-test-net networks: soundtouch-test-net: name: soundtouch-test-net volumes: soundtouch-data: # Named volumes are preferred in Swarm. For multi-node persistence, # consider using a volume driver like NFS or GlusterFS.