rekordbox-viewer/docker-compose.yml
Geert Rademakes 7000e0c046 feat: Implement S3 music storage and playback functionality
- Add S3Service for file operations with MinIO/AWS S3 support
- Add AudioMetadataService for metadata extraction
- Add MusicFile model with MongoDB integration
- Add music API routes for upload, streaming, and management
- Add MusicUpload component with drag-and-drop functionality
- Add MusicPlayer component with custom audio controls
- Add MusicStorage page with complete music management interface
- Update Docker Compose with MinIO service
- Add comprehensive documentation and testing utilities

Features:
- S3-compatible storage (MinIO for local, AWS S3 for production)
- Audio file upload with metadata extraction
- Browser-based music streaming and playback
- File management (upload, delete, search, filter)
- Integration with existing Rekordbox functionality
- Security features (file validation, presigned URLs)
- Performance optimizations (indexing, pagination)

Supported formats: MP3, WAV, FLAC, AAC, OGG, WMA, Opus
2025-08-06 13:44:17 +02:00

89 lines
2.0 KiB
YAML

version: '3.8'
services:
frontend:
build:
context: .
dockerfile: packages/frontend/Dockerfile
ports:
- "8080:80"
environment:
- VITE_API_URL=http://localhost:3001/api
depends_on:
backend:
condition: service_healthy
restart: unless-stopped
backend:
build:
context: .
dockerfile: packages/backend/Dockerfile
ports:
- "3001:3000"
environment:
- MONGODB_URI=mongodb://mongo:27017/rekordbox
- PORT=3000
- NODE_ENV=production
- S3_ENDPOINT=http://minio:9000
- S3_ACCESS_KEY_ID=minioadmin
- S3_SECRET_ACCESS_KEY=minioadmin
- S3_BUCKET_NAME=music-files
- S3_REGION=us-east-1
depends_on:
mongo:
condition: service_healthy
minio:
condition: service_healthy
restart: unless-stopped
mongo:
image: mongo:latest
ports:
- "27017:27017"
volumes:
- mongodb_data:/data/db
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
restart: unless-stopped
minio:
image: minio/minio:latest
ports:
- "9000:9000"
- "9001:9001"
environment:
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin
volumes:
- minio_data:/data
command: server /data --console-address ":9001"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
start_period: 30s
restart: unless-stopped
# MinIO client for initial setup
minio-client:
image: minio/mc:latest
depends_on:
- minio
command: >
sh -c "
sleep 10 &&
mc alias set myminio http://minio:9000 minioadmin minioadmin &&
mc mb myminio/music-files &&
mc policy set public myminio/music-files &&
echo 'MinIO setup complete'
"
restart: "no"
volumes:
mongodb_data:
minio_data: