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: