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 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: SMARTMUSIC_DATABASE_URL: postgres://minstrel:minstrel@postgres:5432/minstrel?sslmode=disable SMARTMUSIC_LOG_FORMAT: text SMARTMUSIC_LIBRARY_SCAN_PATHS: /music SMARTMUSIC_LIBRARY_SCAN_ON_STARTUP: "true" SMARTMUSIC_AUTH_ADMIN_USERNAME: admin # SMARTMUSIC_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. 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. - ./music:/music:ro volumes: minstrel-pgdata: