157 lines
4.2 KiB
Bash
Executable File
157 lines
4.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# MusicBrainz Cleaner - Quick Start Script
|
|
# This script automates the startup of MusicBrainz services
|
|
|
|
set -e
|
|
|
|
echo "🚀 Starting MusicBrainz services..."
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Function to print colored output
|
|
print_status() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
print_success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
print_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
# Check if Docker is running
|
|
if ! docker info > /dev/null 2>&1; then
|
|
print_error "Docker is not running. Please start Docker Desktop first."
|
|
exit 1
|
|
fi
|
|
|
|
print_success "Docker is running"
|
|
|
|
# Check if we're in the right directory
|
|
if [ ! -f "docker-compose.yml" ]; then
|
|
print_error "This script must be run from the musicbrainz-cleaner directory"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if musicbrainz-docker directory exists
|
|
if [ ! -d "../musicbrainz-docker" ]; then
|
|
print_error "musicbrainz-docker directory not found. Please ensure you're in the musicbrainz-server directory."
|
|
exit 1
|
|
fi
|
|
|
|
# Navigate to musicbrainz-docker
|
|
cd ../musicbrainz-docker
|
|
|
|
print_status "Checking for port conflicts..."
|
|
|
|
# Check if port 5000 is available
|
|
if lsof -i :5000 > /dev/null 2>&1; then
|
|
print_warning "Port 5000 is in use. Using port 5001 instead."
|
|
PORT=5001
|
|
else
|
|
print_success "Port 5000 is available"
|
|
PORT=5000
|
|
fi
|
|
|
|
# Stop any existing containers
|
|
print_status "Stopping existing containers..."
|
|
docker-compose down > /dev/null 2>&1 || true
|
|
|
|
# Remove any conflicting containers
|
|
print_status "Cleaning up conflicting containers..."
|
|
docker rm -f musicbrainz-docker-db-1 > /dev/null 2>&1 || true
|
|
|
|
# Start services
|
|
print_status "Starting MusicBrainz services on port $PORT..."
|
|
MUSICBRAINZ_WEB_SERVER_PORT=$PORT docker-compose up -d
|
|
|
|
print_success "Services started successfully!"
|
|
|
|
# Wait for database to be ready
|
|
print_status "Waiting for database to initialize (this may take 5-10 minutes)..."
|
|
print_status "You can monitor progress with: docker-compose logs -f db"
|
|
|
|
# Check if database is ready
|
|
attempts=0
|
|
max_attempts=60
|
|
while [ $attempts -lt $max_attempts ]; do
|
|
if docker-compose exec -T db pg_isready -U musicbrainz > /dev/null 2>&1; then
|
|
print_success "Database is ready!"
|
|
break
|
|
fi
|
|
attempts=$((attempts + 1))
|
|
print_status "Waiting for database... (attempt $attempts/$max_attempts)"
|
|
sleep 10
|
|
done
|
|
|
|
if [ $attempts -eq $max_attempts ]; then
|
|
print_warning "Database may still be initializing. You can check status with: docker-compose logs db"
|
|
fi
|
|
|
|
# Create .env file in musicbrainz-cleaner directory
|
|
cd ../musicbrainz-cleaner
|
|
|
|
print_status "Creating environment configuration..."
|
|
|
|
cat > .env << EOF
|
|
# Database connection (default Docker setup)
|
|
DB_HOST=172.18.0.2
|
|
DB_PORT=5432
|
|
DB_NAME=musicbrainz_db
|
|
DB_USER=musicbrainz
|
|
DB_PASSWORD=musicbrainz
|
|
|
|
# MusicBrainz web server
|
|
MUSICBRAINZ_WEB_SERVER_PORT=$PORT
|
|
EOF
|
|
|
|
print_success "Environment configuration created"
|
|
|
|
# Test connection
|
|
print_status "Testing connection..."
|
|
if docker-compose run --rm musicbrainz-cleaner python3 -c "
|
|
import sys
|
|
sys.path.insert(0, '/app')
|
|
from src.api.database import MusicBrainzDatabase
|
|
try:
|
|
db = MusicBrainzDatabase()
|
|
print('✅ Database connection successful')
|
|
except Exception as e:
|
|
print(f'❌ Database connection failed: {e}')
|
|
sys.exit(1)
|
|
" 2>/dev/null; then
|
|
print_success "Connection test passed!"
|
|
else
|
|
print_warning "Connection test failed. Services may still be initializing."
|
|
fi
|
|
|
|
echo ""
|
|
print_success "MusicBrainz services are now running!"
|
|
echo ""
|
|
echo "📊 Service Status:"
|
|
echo " - Web Server: http://localhost:$PORT"
|
|
echo " - Database: PostgreSQL (internal)"
|
|
echo " - Search: Solr (internal)"
|
|
echo ""
|
|
echo "🧪 Next steps:"
|
|
echo " 1. Run quick test: python3 quick_test_20.py"
|
|
echo " 2. Run larger test: python3 bulk_test_1000.py"
|
|
echo " 3. Use cleaner: python3 -m src.cli.main --input your_file.json --output cleaned.json"
|
|
echo ""
|
|
echo "📋 Useful commands:"
|
|
echo " - View logs: cd ../musicbrainz-docker && docker-compose logs -f"
|
|
echo " - Stop services: cd ../musicbrainz-docker && docker-compose down"
|
|
echo " - Check status: cd ../musicbrainz-docker && docker-compose ps"
|
|
echo "" |