217 lines
9.2 KiB
Plaintext
217 lines
9.2 KiB
Plaintext
═══════════════════════════════════════════════════════════════════
|
|
🐳 TubeScript-API con Docker - Comandos Esenciales
|
|
═══════════════════════════════════════════════════════════════════
|
|
|
|
📋 INICIO RÁPIDO
|
|
───────────────────────────────────────────────────────────────────
|
|
|
|
# Primera vez: dar permisos
|
|
chmod +x docker-start.sh docker-stop.sh docker-logs.sh
|
|
|
|
# Iniciar servicios (FastAPI + Streamlit)
|
|
./docker-start.sh
|
|
|
|
# Abrir panel web
|
|
http://localhost:8501
|
|
|
|
═══════════════════════════════════════════════════════════════════
|
|
|
|
🌐 URLS DE ACCESO
|
|
───────────────────────────────────────────────────────────────────
|
|
|
|
Panel Web (Streamlit):
|
|
→ http://localhost:8501
|
|
|
|
API REST (FastAPI):
|
|
→ http://localhost:8080
|
|
|
|
Documentación API (Swagger):
|
|
→ http://localhost:8080/docs
|
|
|
|
═══════════════════════════════════════════════════════════════════
|
|
|
|
🛠️ COMANDOS DE GESTIÓN
|
|
───────────────────────────────────────────────────────────────────
|
|
|
|
# Ver logs en tiempo real
|
|
./docker-logs.sh
|
|
|
|
# Ver logs de un servicio específico
|
|
docker-compose logs -f streamlit-panel
|
|
docker-compose logs -f tubescript-api
|
|
|
|
# Ver estado de servicios
|
|
docker-compose ps
|
|
|
|
# Reiniciar servicios
|
|
docker-compose restart
|
|
|
|
# Reiniciar un servicio específico
|
|
docker-compose restart streamlit-panel
|
|
|
|
# Detener servicios
|
|
./docker-stop.sh
|
|
|
|
# O manualmente
|
|
docker-compose down
|
|
|
|
═══════════════════════════════════════════════════════════════════
|
|
|
|
🔧 COMANDOS DE MANTENIMIENTO
|
|
───────────────────────────────────────────────────────────────────
|
|
|
|
# Reconstruir imágenes (después de cambiar código)
|
|
docker-compose build
|
|
|
|
# Reconstruir sin cache
|
|
docker-compose build --no-cache
|
|
|
|
# Reiniciar con nueva imagen
|
|
docker-compose up -d --build
|
|
|
|
# Acceder al shell del contenedor
|
|
docker exec -it streamlit_panel bash
|
|
docker exec -it tubescript_api bash
|
|
|
|
# Ver recursos usados (CPU, memoria)
|
|
docker stats
|
|
|
|
═══════════════════════════════════════════════════════════════════
|
|
|
|
🐛 SOLUCIÓN DE PROBLEMAS
|
|
───────────────────────────────────────────────────────────────────
|
|
|
|
# Puerto ocupado
|
|
lsof -i :8501 # Ver qué usa el puerto
|
|
kill -9 <PID> # Matar el proceso
|
|
|
|
# Ver errores detallados
|
|
docker-compose logs streamlit-panel
|
|
docker-compose logs tubescript-api
|
|
|
|
# Limpiar y empezar de nuevo
|
|
docker-compose down -v
|
|
docker system prune -a
|
|
./docker-start.sh
|
|
|
|
# Verificar que FFmpeg funciona
|
|
docker exec streamlit_panel ffmpeg -version
|
|
|
|
═══════════════════════════════════════════════════════════════════
|
|
|
|
📊 VERIFICACIÓN
|
|
───────────────────────────────────────────────────────────────────
|
|
|
|
# Después de ./docker-start.sh, verificar:
|
|
|
|
docker-compose ps
|
|
|
|
# Debe mostrar:
|
|
# streamlit_panel Up (healthy)
|
|
# tubescript_api Up (healthy)
|
|
|
|
# Probar servicios
|
|
curl http://localhost:8501 # Panel web
|
|
curl http://localhost:8080/docs # API docs
|
|
|
|
═══════════════════════════════════════════════════════════════════
|
|
|
|
🎯 FLUJO DE USO
|
|
───────────────────────────────────────────────────────────────────
|
|
|
|
1. Iniciar Docker:
|
|
./docker-start.sh
|
|
|
|
2. Abrir panel:
|
|
http://localhost:8501
|
|
|
|
3. Configurar plataformas:
|
|
Barra lateral → Ingresar RTMP y Stream Key → Guardar
|
|
|
|
4. Buscar video:
|
|
Pestaña 🔍 → Buscar o pegar URL
|
|
|
|
5. Ver URL m3u8:
|
|
Pestaña 🎛️ → Expander "Ver URL m3u8"
|
|
|
|
6. Iniciar transmisiones:
|
|
Click ▶️ en cada plataforma
|
|
|
|
7. Monitorear:
|
|
Pestaña 📊 → Ver estado 🟢🔴⚫
|
|
|
|
8. Detener:
|
|
./docker-stop.sh
|
|
|
|
═══════════════════════════════════════════════════════════════════
|
|
|
|
📚 DOCUMENTACIÓN
|
|
───────────────────────────────────────────────────────────────────
|
|
|
|
DOCKER_README.md - Inicio rápido con Docker
|
|
DOCKER_GUIDE.md - Guía completa de Docker
|
|
README.md - Documentación general
|
|
QUICKSTART.md - Setup y configuración
|
|
M3U8_STREAMING.md - Info sobre streaming m3u8
|
|
VISUAL_GUIDE.md - Guía visual del panel
|
|
|
|
═══════════════════════════════════════════════════════════════════
|
|
|
|
✅ ARCHIVOS IMPORTANTES
|
|
───────────────────────────────────────────────────────────────────
|
|
|
|
Dockerfile - Imagen Docker
|
|
docker-compose.yml - Orquestación de servicios
|
|
.dockerignore - Optimización de build
|
|
docker-start.sh - Script de inicio
|
|
docker-stop.sh - Script para detener
|
|
docker-logs.sh - Script para logs
|
|
|
|
═══════════════════════════════════════════════════════════════════
|
|
|
|
🚀 CARACTERÍSTICAS
|
|
───────────────────────────────────────────────────────────────────
|
|
|
|
✅ FastAPI Backend (puerto 8080)
|
|
✅ Streamlit Frontend (puerto 8501)
|
|
✅ FFmpeg incluido en imagen
|
|
✅ Health checks automáticos
|
|
✅ Auto-restart si falla
|
|
✅ Red compartida entre servicios
|
|
✅ Volúmenes persistentes
|
|
✅ Scripts de gestión
|
|
|
|
═══════════════════════════════════════════════════════════════════
|
|
|
|
💡 TIPS
|
|
───────────────────────────────────────────────────────────────────
|
|
|
|
• Los archivos de configuración (stream_config.json,
|
|
streams_state.json) se comparten entre contenedores
|
|
y tu sistema local.
|
|
|
|
• Los logs se guardan automáticamente y puedes verlos
|
|
con ./docker-logs.sh
|
|
|
|
• Si cambias código en main.py o streamlit_app.py,
|
|
reconstruye con: docker-compose build
|
|
|
|
• Los servicios se reinician automáticamente si fallan
|
|
|
|
• Usa docker-compose ps para ver el estado de salud
|
|
|
|
═══════════════════════════════════════════════════════════════════
|
|
|
|
🎉 ¡LISTO PARA USAR!
|
|
───────────────────────────────────────────────────────────────────
|
|
|
|
./docker-start.sh
|
|
|
|
Panel Web: http://localhost:8501
|
|
API: http://localhost:8080
|
|
Docs: http://localhost:8080/docs
|
|
|
|
¡Transmite a múltiples plataformas! 📺🚀
|
|
|
|
═══════════════════════════════════════════════════════════════════
|