ai-unified-studio

🐳 Guia Docker - AI Unified Studio

Deploy rápido e fácil usando Docker!

📋 Pré-requisitos

🚀 Quick Start

1️⃣ Método Simples (Docker Compose)

# Clone o repositório
git clone https://github.com/avila-inc/ai-unified-studio.git
cd ai-unified-studio

# Configure variáveis de ambiente (opcional)
cp .env.example .env
# Edite .env e adicione suas API keys

# Inicie todos os serviços
docker-compose up -d

# Verificar logs
docker-compose logs -f

Pronto! A aplicação estará rodando em:

2️⃣ Método Manual (Docker)

# Apenas Ollama
docker run -d \
  --name ollama \
  -p 11434:11434 \
  -v ollama_data:/root/.ollama \
  ollama/ollama:latest

# App
docker build -t ai-studio .
docker run -d \
  --name ai-studio \
  -p 8080:8080 \
  -e OLLAMA_HOST=http://ollama:11434 \
  --link ollama:ollama \
  ai-studio

📦 Serviços Inclusos

1. Ollama (LLM Local)

2. AI Studio App

3. ComfyUI (Opcional)

Para habilitar ComfyUI, descomente as linhas no docker-compose.yml.

🔧 Configuração

Variáveis de Ambiente (.env)

# APIs
DEEPSEEK_API_KEY=your_key_here
OPENAI_API_KEY=your_key_here

# Ollama
OLLAMA_HOST=http://ollama:11434

# Paths (dentro do container)
PDF_OUTPUT_FOLDER=/app/pdf
EBOOKS_OUTPUT_FOLDER=/app/converted_ebooks

Volumes Persistentes

Os seguintes dados são persistidos entre restarts:

volumes:
  ollama_data:       # Modelos Ollama baixados
  app_data:          # Configurações da app
  ./pdf:             # PDFs baixados
  ./converted_ebooks: # eBooks convertidos

🎯 Comandos Úteis

Gerenciamento de Containers

# Iniciar serviços
docker-compose up -d

# Parar serviços
docker-compose down

# Reiniciar serviços
docker-compose restart

# Ver logs
docker-compose logs -f app

# Ver status
docker-compose ps

Ollama - Download de Modelos

# Acessar container do Ollama
docker exec -it ai-studio-ollama bash

# Baixar modelos
ollama pull llama3.2
ollama pull dolphin-llama3:8b
ollama pull gemma3:1b
ollama pull deepseek-r1:8b

# Listar modelos instalados
ollama list

# Sair
exit

Atualizar Aplicação

# Pull nova versão
git pull origin main

# Rebuild e restart
docker-compose down
docker-compose build --no-cache
docker-compose up -d

Backup e Restore

# Backup de volumes
docker run --rm \
  -v ollama_data:/data \
  -v $(pwd):/backup \
  alpine tar czf /backup/ollama_backup.tar.gz -C /data .

# Restore
docker run --rm \
  -v ollama_data:/data \
  -v $(pwd):/backup \
  alpine tar xzf /backup/ollama_backup.tar.gz -C /data

🐛 Troubleshooting

Problema: Ollama não conecta

# Verificar se está rodando
docker ps | grep ollama

# Verificar logs
docker logs ai-studio-ollama

# Restart
docker restart ai-studio-ollama

# Testar conexão
curl http://localhost:11434/api/generate

Problema: App não inicia

# Ver logs de erro
docker logs ai-studio-app

# Verificar permissões
ls -la pdf/ converted_ebooks/

# Rebuild container
docker-compose build --no-cache app
docker-compose up -d app

Problema: Falta de memória

# Aumentar limite de memória do Docker
# Docker Desktop → Settings → Resources → Memory: 8GB+

# Verificar uso
docker stats

Problema: Porta já em uso

# Encontrar processo
# Linux/Mac
lsof -i :11434
lsof -i :8080

# Windows
netstat -ano | findstr :11434
netstat -ano | findstr :8080

# Mudar porta no docker-compose.yml
ports:
  - "8081:8080"  # Use 8081 em vez de 8080

🎮 Modo Desenvolvimento

Hot Reload

# docker-compose.override.yml
services:
  app:
    volumes:
      - .:/app
    command: python -u app_gui.py
    environment:
      - PYTHONUNBUFFERED=1
docker-compose up -d

Debug Mode

# Acessar shell do container
docker exec -it ai-studio-app bash

# Rodar comandos manualmente
python app_gui.py
python pdf_to_ebook_converter.py --help

📊 Monitoramento

Health Check

# Verificar saúde dos containers
docker ps

# Health check manual
docker exec ai-studio-app python -c "import sys; sys.exit(0)"

Logs

# Todos os serviços
docker-compose logs -f

# Serviço específico
docker-compose logs -f app
docker-compose logs -f ollama

# Últimas 100 linhas
docker-compose logs --tail=100 app

Métricas

# Uso de recursos em tempo real
docker stats

# Espaço em disco
docker system df

# Limpar recursos não usados
docker system prune -a

🚀 Deploy em Produção

Docker Swarm

# Inicializar swarm
docker swarm init

# Deploy stack
docker stack deploy -c docker-compose.yml ai-studio

# Ver serviços
docker service ls

# Scale up
docker service scale ai-studio_app=3

Kubernetes

# Criar deployment
kubectl create deployment ai-studio --image=ai-studio:latest

# Expor serviço
kubectl expose deployment ai-studio --type=LoadBalancer --port=8080

# Ver status
kubectl get pods
kubectl get services

Docker Registry

# Build e tag
docker build -t seu-registry.com/ai-studio:1.0.0 .

# Push
docker push seu-registry.com/ai-studio:1.0.0

# Pull em outro servidor
docker pull seu-registry.com/ai-studio:1.0.0

🔒 Segurança

Melhores Práticas

# Usar usuário não-root (já implementado)
USER appuser

# Scan de vulnerabilidades
docker scan ai-studio:latest

# Usar multi-stage build (já implementado)
FROM python:3.11-slim as builder
# ...
FROM python:3.11-slim

Secrets Management

# Usar Docker secrets (Swarm)
echo "sua_api_key" | docker secret create deepseek_key -

# Usar em compose
services:
  app:
    secrets:
      - deepseek_key

📈 Performance

Otimizações

# Build cache
docker build --cache-from ai-studio:latest -t ai-studio:latest .

# Limitar recursos
services:
  app:
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 4G
        reservations:
          memory: 2G

GPU Support

# Para ComfyUI/Stable Diffusion
services:
  comfyui:
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

🆘 Suporte

Problemas Conhecidos

  1. GUI não funciona em Docker - Use API REST ou versão web
  2. ComfyUI requer GPU - Use CPU ou remova do compose
  3. Windows paths - Use / em vez de \ em volumes

Comunidade

📚 Recursos Adicionais


**Feito com ❤️ por [Avila Development](https://avila.inc)** [⬆ Voltar ao topo](#-guia-docker---ai-unified-studio)