version: "3.9" # Local development environment for Minstrel. # Not used by CI — integration tests run against this compose stack manually: # docker compose up -d postgres # MINSTREL_TEST_DATABASE_URL=postgres://minstrel:minstrel@localhost:5432/minstrel?sslmode=disable \ # go test ./... # # Full stack (server + db): # docker compose up --build services: postgres: image: postgres:16-alpine environment: POSTGRES_USER: minstrel POSTGRES_PASSWORD: minstrel POSTGRES_DB: minstrel networks: - minstrel # ports: # - "5432:5432" volumes: - minstrel-pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U minstrel -d minstrel"] interval: 5s timeout: 5s retries: 10 minstrel: build: . depends_on: postgres: condition: service_healthy environment: MINSTREL_DATABASE_URL: postgres://minstrel:minstrel@postgres:5432/minstrel?sslmode=disable MINSTREL_LOG_FORMAT: text MINSTREL_LIBRARY_SCAN_PATHS: /music MINSTREL_LIBRARY_SCAN_ON_STARTUP: "true" MINSTREL_STORAGE_DATA_DIR: /app/data # MINSTREL_AUTH_ADMIN_PASSWORD left unset on purpose — bootstrap # generates one and prints it to stderr on first boot. Watch the logs # of the minstrel service the first time you bring the stack up. networks: - minstrel ports: - "4533:4533" volumes: # Point ./music at your test library (symlink, bind-mount, whatever). # Read-only so a buggy scanner can't rewrite your files. - /mnt/Media/Music:/music:ro # Cached artifacts: playlist cover collages, artist art, album-cover # fallbacks (when the music dir is RO). Persists across container # recreates so the operator doesn't redownload art on every up/down. - minstrel-data:/app/data volumes: minstrel-pgdata: minstrel-data: networks: minstrel: