Spaces:
Sleeping
Sleeping
File size: 3,392 Bytes
01d5a5d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
#!/bin/bash
# Source the logging utilities
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${SCRIPT_DIR}/utils/logging.sh"
# Activate Poetry virtual environment if available (but only if not already activated)
log_info "Setting up Python environment..."
# Check if Python environment is already activated by looking for specific environment markers
if [[ "$VIRTUAL_ENV" != "" ]]; then
log_info "Python virtual environment already activated: $VIRTUAL_ENV"
else
POETRY_ENV_PATH=""
if command -v poetry &>/dev/null; then
POETRY_ENV_PATH=$(poetry env info -p 2>/dev/null)
if [ -n "$POETRY_ENV_PATH" ] && [ -f "$POETRY_ENV_PATH/bin/activate" ]; then
log_info "Activating Poetry virtual environment: $POETRY_ENV_PATH"
source "$POETRY_ENV_PATH/bin/activate"
else
# Try using the local activation script if it exists
if [ -f ".poetry-venv/activate" ]; then
log_info "Activating Poetry environment via local script"
source ".poetry-venv/activate"
else
log_warning "Poetry environment not found. Some dependencies might be missing."
fi
fi
else
log_warning "Poetry is not installed. Some dependencies might be missing."
fi
fi
# Set environment variables
log_info "Setting environment variables..."
export PYTHONPATH=$(pwd):${PYTHONPATH}
# Load environment variables from .env file
set -a
source .env
set +a
# Use local base directory
export BASE_DIR=${LOCAL_BASE_DIR}
# Ensure using the correct Python environment
log_info "Checking Python environment..."
PYTHON_PATH=$(which python)
log_info "Using Python: $PYTHON_PATH"
PYTHON_VERSION=$(python --version)
log_info "Python version: $PYTHON_VERSION"
# Check necessary Python packages
log_info "Checking necessary Python packages..."
python -c "import flask" || { log_error "Error: Missing flask package"; exit 1; }
python -c "import chromadb" || { log_error "Error: Missing chromadb package"; exit 1; }
# Initialize database
log_info "Initializing database..."
SQLITE_DB_PATH="${BASE_DIR}/data/sqlite/lpm.db"
mkdir -p "${BASE_DIR}/data/sqlite"
if [ ! -f "$SQLITE_DB_PATH" ]; then
log_info "Initializing database..."
cat docker/sqlite/init.sql | sqlite3 "$SQLITE_DB_PATH"
log_success "Database initialization completed"
else
log_info "Database already exists"
fi
# Ensure necessary directories exist
log_info "Checking necessary directories..."
mkdir -p ${BASE_DIR}/data/chroma_db
mkdir -p ${LOCAL_LOG_DIR}
#mkdir -p ${BASE_DIR}/raw_content
#mkdir -p ${BASE_DIR}/data_pipeline
# Initialize ChromaDB
log_info "Initializing ChromaDB..."
python docker/app/init_chroma.py
# Get local IP address (excluding localhost and docker networks)
LOCAL_IP=$(ifconfig | grep "inet " | grep -v "127.0.0.1" | grep "192.168" | awk '{print $2}' | head -n 1)
# Run database migrations first
log_info "Running database migrations..."
python scripts/run_migrations.py
# Start Flask application
log_info "Starting Flask application..."
log_info "Application will run at the following addresses:"
log_info "- Local access: http://localhost:${LOCAL_APP_PORT}"
log_info "- LAN access: http://${LOCAL_IP}:${LOCAL_APP_PORT}"
# Output logs to file
exec python -m flask run --host=0.0.0.0 --port=${LOCAL_APP_PORT} >> "${LOCAL_LOG_DIR}/backend.log" 2>&1
|