Files
Audio-Classifier/docker-compose.yml
Benoit 1bb13c79d0 Build Docker Complètement Autonome - Terminé !
🎯 Ce qui a été fait
1. Modèles intégrés dans l'image Docker 
Les 5 modèles Essentia (28 MB total) sont maintenant copiés directement dans l'image
Pas besoin de volume mount /backend/models:/app/models
Dockerfile modifié pour inclure COPY models/ ./models/
2. Volume models supprimé du docker-compose 
Le docker-compose.yml ne monte plus le dossier models/
Seul le dossier audio est monté (pour accès aux fichiers)
3. Dockerignore configuré 
Les modèles ne sont plus ignorés
Copiés dans l'image lors du build
4. Documentation complète 
DEPLOYMENT.md - Guide de déploiement complet
README.md - Mise à jour avec instructions autonomes
Script check-autonomous.sh - Vérification automatique
📦 Contenu de l'image
Modèles Essentia inclus (28 MB) :

/app/models/
├── discogs-effnet-bs64-1.pb (18 MB)
├── genre_discogs400-discogs-effnet-1.pb (2 MB)
├── genre_discogs400-discogs-effnet-1.json (15 KB)
├── mtg_jamendo_instrument-discogs-effnet-1.pb (2.6 MB)
└── mtg_jamendo_moodtheme-discogs-effnet-1.pb (2.7 MB)
🚀 Déploiement Autonome
Sur N'IMPORTE QUEL serveur avec Docker :

# 1. Cloner
git clone <repo>
cd Audio-Classifier

# 2. Configurer (optionnel)
echo "AUDIO_LIBRARY_PATH=/path/to/music" > .env

# 3. Démarrer
docker-compose up -d
Aucune action manuelle requise :
 Pas de téléchargement de modèles
 Pas de configuration complexe
 Pas de dépendances externes
 Tout est dans l'image Docker
 Avantages
Portabilité : L'image contient tout ce qu'il faut
Rapidité : Pas d'attente pour télécharger 28 MB au démarrage
Fiabilité : Pas de risque de modèles manquants ou corrompus
Offline : Fonctionne sans connexion internet (après pull de l'image)
Reproductibilité : Même version des modèles partout
🔍 Vérification

# Vérifier que tout est autonome
bash check-autonomous.sh

# Vérifier les modèles dans le container
docker-compose exec backend ls -lh /app/models
# → Doit afficher 28 MB de modèles
📊 Taille de l'image
Image backend : ~1.2 GB (avec modèles)
Image frontend : ~500 MB
Total : ~1.7 GB
C'est normal pour une image Python + TensorFlow + Essentia + modèles. Le système est maintenant 100% autonome et prêt pour un déploiement sans intervention !
2025-12-23 10:34:32 +01:00

59 lines
1.8 KiB
YAML

services:
postgres:
image: pgvector/pgvector:pg16
container_name: audio_classifier_db
environment:
POSTGRES_USER: ${POSTGRES_USER:-audio_user}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-audio_password}
POSTGRES_DB: ${POSTGRES_DB:-audio_classifier}
ports:
- "5433:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
- ./backend/init-db.sql:/docker-entrypoint-initdb.d/init-db.sql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-audio_user}"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
backend:
build: ./backend
container_name: audio_classifier_api
depends_on:
postgres:
condition: service_healthy
environment:
DATABASE_URL: postgresql://${POSTGRES_USER:-audio_user}:${POSTGRES_PASSWORD:-audio_password}@postgres:5432/${POSTGRES_DB:-audio_classifier}
CORS_ORIGINS: ${CORS_ORIGINS:-http://localhost:3000}
ANALYSIS_USE_CLAP: ${ANALYSIS_USE_CLAP:-false}
ANALYSIS_NUM_WORKERS: ${ANALYSIS_NUM_WORKERS:-4}
ESSENTIA_MODELS_PATH: /app/models
ports:
- "8001:8000"
volumes:
# Mount your audio library (read-write for transcoding and waveforms)
- ${AUDIO_LIBRARY_PATH:-./audio_samples}:/audio
restart: unless-stopped
frontend:
build:
context: ./frontend
args:
NEXT_PUBLIC_API_URL: http://localhost:8001
container_name: audio_classifier_ui
environment:
# Use localhost:8001 because the browser (client-side) needs to access the API
# The backend is mapped to port 8001 on the host machine
NEXT_PUBLIC_API_URL: http://localhost:8001
ports:
- "3000:3000"
depends_on:
- backend
restart: unless-stopped
volumes:
postgres_data:
driver: local