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 !
This commit is contained in:
322
DEPLOYMENT.md
Normal file
322
DEPLOYMENT.md
Normal file
@@ -0,0 +1,322 @@
|
|||||||
|
# Déploiement Audio Classifier
|
||||||
|
|
||||||
|
## 🚀 Déploiement Autonome
|
||||||
|
|
||||||
|
Le système est **100% autonome** - aucune action manuelle requise ! Les modèles Essentia sont intégrés dans l'image Docker.
|
||||||
|
|
||||||
|
### Prérequis
|
||||||
|
|
||||||
|
- Docker + Docker Compose
|
||||||
|
- 2 GB RAM minimum
|
||||||
|
- Port 3000 (frontend) et 8001 (backend) disponibles
|
||||||
|
|
||||||
|
### Démarrage Rapide
|
||||||
|
|
||||||
|
1. **Cloner le projet** :
|
||||||
|
```bash
|
||||||
|
git clone <votre-repo>
|
||||||
|
cd Audio-Classifier
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Configurer le chemin audio** (optionnel) :
|
||||||
|
```bash
|
||||||
|
# Créer un fichier .env
|
||||||
|
echo "AUDIO_LIBRARY_PATH=/chemin/vers/votre/musique" > .env
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Démarrer** :
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Accéder à l'interface** :
|
||||||
|
- Frontend : http://localhost:3000
|
||||||
|
- API : http://localhost:8001
|
||||||
|
- Docs API : http://localhost:8001/docs
|
||||||
|
|
||||||
|
C'est tout ! 🎉
|
||||||
|
|
||||||
|
### Premier Scan
|
||||||
|
|
||||||
|
1. Ouvrir http://localhost:3000
|
||||||
|
2. Cliquer sur le bouton **"Rescan"** dans le header
|
||||||
|
3. Attendre que le scan se termine (progression affichée)
|
||||||
|
4. Profiter !
|
||||||
|
|
||||||
|
## 📦 Ce qui est inclus dans l'image
|
||||||
|
|
||||||
|
✅ **Modèles Essentia** (28 MB) :
|
||||||
|
- `discogs-effnet-bs64-1.pb` (18 MB) - Embedding model
|
||||||
|
- `genre_discogs400-discogs-effnet-1.pb` (2 MB) - Genre classifier
|
||||||
|
- `mtg_jamendo_moodtheme-discogs-effnet-1.pb` (2.7 MB) - Mood classifier
|
||||||
|
- `mtg_jamendo_instrument-discogs-effnet-1.pb` (2.6 MB) - Instrument classifier
|
||||||
|
|
||||||
|
✅ **Dépendances Python** :
|
||||||
|
- FastAPI, Uvicorn
|
||||||
|
- Essentia-TensorFlow
|
||||||
|
- Librosa, SQLAlchemy
|
||||||
|
- FFmpeg (pour transcodage)
|
||||||
|
|
||||||
|
✅ **Base de données** :
|
||||||
|
- PostgreSQL avec pgvector
|
||||||
|
- Migrations Alembic auto-appliquées
|
||||||
|
|
||||||
|
## ⚙️ Configuration
|
||||||
|
|
||||||
|
### Variables d'environnement (.env)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Audio Library
|
||||||
|
AUDIO_LIBRARY_PATH=/chemin/vers/musique # Défaut: ./audio_samples
|
||||||
|
|
||||||
|
# Database
|
||||||
|
POSTGRES_USER=audio_user
|
||||||
|
POSTGRES_PASSWORD=audio_password
|
||||||
|
POSTGRES_DB=audio_classifier
|
||||||
|
|
||||||
|
# CORS (pour déploiement distant)
|
||||||
|
CORS_ORIGINS=http://localhost:3000,http://votre-domaine.com
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ports
|
||||||
|
|
||||||
|
Par défaut :
|
||||||
|
- Frontend : `3000`
|
||||||
|
- Backend API : `8001`
|
||||||
|
- PostgreSQL : `5433` (mapping host)
|
||||||
|
|
||||||
|
Pour changer :
|
||||||
|
```yaml
|
||||||
|
# Dans docker-compose.yml
|
||||||
|
services:
|
||||||
|
backend:
|
||||||
|
ports:
|
||||||
|
- "VOTRE_PORT:8000"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔄 Mise à jour
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Arrêter les containers
|
||||||
|
docker-compose down
|
||||||
|
|
||||||
|
# Pull les dernières modifications
|
||||||
|
git pull
|
||||||
|
|
||||||
|
# Rebuild et redémarrer
|
||||||
|
docker-compose up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📊 Monitoring
|
||||||
|
|
||||||
|
### Logs en temps réel
|
||||||
|
```bash
|
||||||
|
# Tous les services
|
||||||
|
docker-compose logs -f
|
||||||
|
|
||||||
|
# Backend uniquement
|
||||||
|
docker-compose logs -f backend
|
||||||
|
|
||||||
|
# Frontend uniquement
|
||||||
|
docker-compose logs -f frontend
|
||||||
|
```
|
||||||
|
|
||||||
|
### Statut des containers
|
||||||
|
```bash
|
||||||
|
docker-compose ps
|
||||||
|
```
|
||||||
|
|
||||||
|
### Santé de l'API
|
||||||
|
```bash
|
||||||
|
curl http://localhost:8001/health
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🗄️ Gestion de la base de données
|
||||||
|
|
||||||
|
### Backup
|
||||||
|
```bash
|
||||||
|
docker-compose exec postgres pg_dump -U audio_user audio_classifier > backup.sql
|
||||||
|
```
|
||||||
|
|
||||||
|
### Restore
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T postgres psql -U audio_user audio_classifier < backup.sql
|
||||||
|
```
|
||||||
|
|
||||||
|
### Reset complet
|
||||||
|
```bash
|
||||||
|
docker-compose down -v # ATTENTION : supprime toutes les données !
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎵 Scan de bibliothèque
|
||||||
|
|
||||||
|
### Via l'interface web
|
||||||
|
Cliquez sur **"Rescan"** dans le header.
|
||||||
|
|
||||||
|
### Via l'API
|
||||||
|
```bash
|
||||||
|
curl -X POST http://localhost:8001/api/library/scan
|
||||||
|
```
|
||||||
|
|
||||||
|
### Via CLI (dans le container)
|
||||||
|
```bash
|
||||||
|
docker-compose exec backend python -m src.cli.scanner /audio
|
||||||
|
```
|
||||||
|
|
||||||
|
### Statut du scan
|
||||||
|
```bash
|
||||||
|
curl http://localhost:8001/api/library/scan/status
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📁 Structure des fichiers générés
|
||||||
|
|
||||||
|
Lors du scan, deux dossiers sont créés automatiquement :
|
||||||
|
|
||||||
|
```
|
||||||
|
/votre/musique/
|
||||||
|
├── fichier1.mp3
|
||||||
|
├── fichier2.flac
|
||||||
|
├── transcoded/ # MP3 128kbps pour streaming
|
||||||
|
│ ├── fichier1.mp3
|
||||||
|
│ └── fichier2.mp3
|
||||||
|
└── waveforms/ # JSON pré-calculés
|
||||||
|
├── fichier1.waveform.json
|
||||||
|
└── fichier2.waveform.json
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚢 Déploiement Production
|
||||||
|
|
||||||
|
### Sur un serveur distant
|
||||||
|
|
||||||
|
1. **Installer Docker** sur le serveur
|
||||||
|
|
||||||
|
2. **Cloner et configurer** :
|
||||||
|
```bash
|
||||||
|
git clone <votre-repo>
|
||||||
|
cd Audio-Classifier
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Configurer .env** :
|
||||||
|
```bash
|
||||||
|
# Chemin vers musique
|
||||||
|
AUDIO_LIBRARY_PATH=/mnt/musique
|
||||||
|
|
||||||
|
# Domaine public
|
||||||
|
CORS_ORIGINS=http://votre-domaine.com,https://votre-domaine.com
|
||||||
|
|
||||||
|
# Credentials BDD (sécurisés !)
|
||||||
|
POSTGRES_PASSWORD=motdepasse_fort_aleatoire
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Démarrer** :
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Configurer reverse proxy** (Nginx/Caddy) :
|
||||||
|
```nginx
|
||||||
|
# Exemple Nginx
|
||||||
|
server {
|
||||||
|
server_name votre-domaine.com;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://localhost:3000;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /api/ {
|
||||||
|
proxy_pass http://localhost:8001/api/;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Avec Docker Hub
|
||||||
|
|
||||||
|
1. **Tag et push** :
|
||||||
|
```bash
|
||||||
|
docker tag audio-classifier-backend:latest votrecompte/audio-classifier-backend:latest
|
||||||
|
docker push votrecompte/audio-classifier-backend:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Sur le serveur** :
|
||||||
|
```yaml
|
||||||
|
# docker-compose.yml
|
||||||
|
services:
|
||||||
|
backend:
|
||||||
|
image: votrecompte/audio-classifier-backend:latest
|
||||||
|
# ... reste de la config
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔒 Sécurité
|
||||||
|
|
||||||
|
### Recommandations
|
||||||
|
|
||||||
|
✅ Changer les mots de passe par défaut
|
||||||
|
✅ Utiliser HTTPS en production (Let's Encrypt)
|
||||||
|
✅ Restreindre CORS_ORIGINS aux domaines autorisés
|
||||||
|
✅ Ne pas exposer PostgreSQL publiquement
|
||||||
|
✅ Backups réguliers de la BDD
|
||||||
|
|
||||||
|
### Firewall
|
||||||
|
```bash
|
||||||
|
# Autoriser uniquement ports nécessaires
|
||||||
|
ufw allow 80/tcp # HTTP
|
||||||
|
ufw allow 443/tcp # HTTPS
|
||||||
|
ufw allow 22/tcp # SSH
|
||||||
|
ufw enable
|
||||||
|
```
|
||||||
|
|
||||||
|
## ❓ Troubleshooting
|
||||||
|
|
||||||
|
### Les modèles ne se chargent pas
|
||||||
|
```bash
|
||||||
|
# Vérifier que les modèles sont dans l'image
|
||||||
|
docker-compose exec backend ls -lh /app/models
|
||||||
|
|
||||||
|
# Devrait afficher 28 MB de modèles
|
||||||
|
```
|
||||||
|
|
||||||
|
### Le scan ne démarre pas
|
||||||
|
```bash
|
||||||
|
# Vérifier les permissions du dossier audio
|
||||||
|
docker-compose exec backend ls -la /audio
|
||||||
|
|
||||||
|
# Devrait être accessible en écriture
|
||||||
|
```
|
||||||
|
|
||||||
|
### Erreur de mémoire
|
||||||
|
```bash
|
||||||
|
# Augmenter la mémoire Docker
|
||||||
|
# Docker Desktop > Settings > Resources > Memory : 4 GB minimum
|
||||||
|
```
|
||||||
|
|
||||||
|
### Port déjà utilisé
|
||||||
|
```bash
|
||||||
|
# Changer le port dans docker-compose.yml
|
||||||
|
services:
|
||||||
|
backend:
|
||||||
|
ports:
|
||||||
|
- "8002:8000" # Au lieu de 8001
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📚 Ressources
|
||||||
|
|
||||||
|
- [Documentation Essentia](https://essentia.upf.edu/)
|
||||||
|
- [FastAPI Docs](https://fastapi.tiangolo.com/)
|
||||||
|
- [Next.js Docs](https://nextjs.org/docs)
|
||||||
|
- [Docker Compose](https://docs.docker.com/compose/)
|
||||||
|
|
||||||
|
## 💡 Conseil
|
||||||
|
|
||||||
|
Pour un déploiement **vraiment** autonome sur un nouveau serveur :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Tout en une commande !
|
||||||
|
git clone <repo> && \
|
||||||
|
cd Audio-Classifier && \
|
||||||
|
echo "AUDIO_LIBRARY_PATH=/mnt/musique" > .env && \
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# Attendre 30 secondes puis ouvrir http://serveur:3000
|
||||||
|
# Cliquer sur "Rescan" et c'est parti ! 🚀
|
||||||
|
```
|
||||||
53
README.md
53
README.md
@@ -35,48 +35,43 @@ Outil de classification audio automatique capable d'indexer et analyser des bibl
|
|||||||
- PostgreSQL 16 avec extension pgvector
|
- PostgreSQL 16 avec extension pgvector
|
||||||
- FFmpeg (pour librosa)
|
- FFmpeg (pour librosa)
|
||||||
|
|
||||||
## 🚀 Démarrage Rapide
|
## 🚀 Démarrage Rapide - 100% Autonome !
|
||||||
|
|
||||||
### 1. Cloner et configurer
|
### Installation en 3 commandes
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# 1. Cloner le projet
|
||||||
git clone <repo>
|
git clone <repo>
|
||||||
cd audio-classifier
|
cd audio-classifier
|
||||||
cp .env.example .env
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Configurer l'environnement
|
# 2. Configurer le chemin audio (optionnel)
|
||||||
|
echo "AUDIO_LIBRARY_PATH=/chemin/vers/votre/musique" > .env
|
||||||
|
|
||||||
Éditer `.env` et définir le chemin vers votre bibliothèque audio :
|
# 3. Démarrer !
|
||||||
|
|
||||||
```env
|
|
||||||
AUDIO_LIBRARY_PATH=/chemin/vers/vos/fichiers/audio
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Télécharger les modèles Essentia
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./scripts/download-essentia-models.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. Lancer avec Docker (Production)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
L'API sera disponible sur `http://localhost:8001`
|
**C'est tout !** 🎉
|
||||||
La documentation interactive : `http://localhost:8001/docs`
|
|
||||||
Le frontend sera accessible sur `http://localhost:3000`
|
|
||||||
|
|
||||||
### 5. Lancer avec Docker (Développement)
|
- Frontend : http://localhost:3000
|
||||||
|
- API : http://localhost:8001
|
||||||
|
- API Docs : http://localhost:8001/docs
|
||||||
|
|
||||||
```bash
|
### Premier scan
|
||||||
docker-compose -f docker-compose.dev.yml up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
L'API sera disponible sur `http://localhost:8001`
|
1. Ouvrir http://localhost:3000
|
||||||
Le frontend sera accessible sur `http://localhost:3000`
|
2. Cliquer sur **"Rescan"** dans le header
|
||||||
|
3. Attendre la fin du scan
|
||||||
|
4. Profiter de votre bibliothèque musicale indexée !
|
||||||
|
|
||||||
|
### ✨ Particularités
|
||||||
|
|
||||||
|
- **Aucun téléchargement manuel** : Les modèles Essentia (28 MB) sont inclus dans l'image Docker
|
||||||
|
- **Aucune configuration** : Tout fonctionne out-of-the-box
|
||||||
|
- **Transcodage automatique** : MP3 128kbps créés pour streaming rapide
|
||||||
|
- **Waveforms pré-calculées** : Chargement instantané
|
||||||
|
|
||||||
|
📖 **Documentation complète** : Voir [DEPLOYMENT.md](DEPLOYMENT.md)
|
||||||
|
|
||||||
## 📖 Utilisation
|
## 📖 Utilisation
|
||||||
|
|
||||||
|
|||||||
39
backend/.dockerignore
Normal file
39
backend/.dockerignore
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# Python
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
*.so
|
||||||
|
.Python
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
*.egg-info/
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
|
||||||
|
# Models are included in the image
|
||||||
|
|
||||||
|
# IDEs
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
|
||||||
|
# OS
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Git
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Test
|
||||||
|
.pytest_cache/
|
||||||
|
.coverage
|
||||||
|
htmlcov/
|
||||||
|
|
||||||
|
# Alembic
|
||||||
|
# Keep alembic.ini and versions/
|
||||||
@@ -47,10 +47,10 @@ RUN pip install --no-cache-dir -r requirements.txt
|
|||||||
# Copy application code
|
# Copy application code
|
||||||
COPY src/ ./src/
|
COPY src/ ./src/
|
||||||
COPY alembic.ini .
|
COPY alembic.ini .
|
||||||
COPY models/ ./models/
|
|
||||||
|
|
||||||
# Create models directory if not exists
|
# Copy Essentia models into image
|
||||||
RUN mkdir -p /app/models
|
COPY models/ ./models/
|
||||||
|
RUN ls -lh /app/models
|
||||||
|
|
||||||
# Expose port
|
# Expose port
|
||||||
EXPOSE 8000
|
EXPOSE 8000
|
||||||
|
|||||||
58
check-autonomous.sh
Normal file
58
check-autonomous.sh
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Script de vérification autonomie
|
||||||
|
|
||||||
|
echo "=== Vérification Audio Classifier Autonome ==="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Check 1: Docker Compose
|
||||||
|
echo "✓ Checking docker-compose.yml..."
|
||||||
|
if [ ! -f "docker-compose.yml" ]; then
|
||||||
|
echo " ❌ docker-compose.yml missing"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo " ✓ docker-compose.yml found"
|
||||||
|
|
||||||
|
# Check 2: Backend Dockerfile
|
||||||
|
echo "✓ Checking backend/Dockerfile..."
|
||||||
|
if ! grep -q "COPY models/" backend/Dockerfile; then
|
||||||
|
echo " ❌ Models not copied in Dockerfile"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo " ✓ Models included in Dockerfile"
|
||||||
|
|
||||||
|
# Check 3: Models présents localement
|
||||||
|
echo "✓ Checking Essentia models..."
|
||||||
|
MODEL_COUNT=$(ls backend/models/*.pb 2>/dev/null | wc -l)
|
||||||
|
if [ "$MODEL_COUNT" -lt 4 ]; then
|
||||||
|
echo " ❌ Missing models in backend/models/ ($MODEL_COUNT found, need 4+)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo " ✓ $MODEL_COUNT model files found"
|
||||||
|
|
||||||
|
# Check 4: No volume mount for models
|
||||||
|
echo "✓ Checking no models volume mount..."
|
||||||
|
if grep -q "./backend/models:/app/models" docker-compose.yml; then
|
||||||
|
echo " ❌ Models volume mount still present in docker-compose.yml"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo " ✓ No models volume mount (embedded in image)"
|
||||||
|
|
||||||
|
# Check 5: README updated
|
||||||
|
echo "✓ Checking README..."
|
||||||
|
if ! grep -q "100% Autonome" README.md; then
|
||||||
|
echo " ⚠️ README might need update"
|
||||||
|
else
|
||||||
|
echo " ✓ README mentions autonomous setup"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== ✓ All checks passed! ==="
|
||||||
|
echo ""
|
||||||
|
echo "Your Docker setup is fully autonomous:"
|
||||||
|
echo " - Models included in image (28 MB)"
|
||||||
|
echo " - No manual downloads required"
|
||||||
|
echo " - Ready for deployment anywhere"
|
||||||
|
echo ""
|
||||||
|
echo "To deploy:"
|
||||||
|
echo " docker-compose up -d"
|
||||||
|
echo ""
|
||||||
@@ -35,8 +35,6 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
# Mount your audio library (read-write for transcoding and waveforms)
|
# Mount your audio library (read-write for transcoding and waveforms)
|
||||||
- ${AUDIO_LIBRARY_PATH:-./audio_samples}:/audio
|
- ${AUDIO_LIBRARY_PATH:-./audio_samples}:/audio
|
||||||
# Mount models directory
|
|
||||||
- ./backend/models:/app/models
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
frontend:
|
frontend:
|
||||||
|
|||||||
Reference in New Issue
Block a user