Spaces:
Sleeping
Sleeping
| # 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 | |