69 lines
2.4 KiB
Bash
69 lines
2.4 KiB
Bash
#!/bin/bash
|
|
# Docker entrypoint script for LightRAG
|
|
# This script initializes demo tenants and starts the server
|
|
|
|
set -e
|
|
|
|
# Source environment variables
|
|
if [ -f /app/.env ]; then
|
|
export $(cat /app/.env | grep -v '#' | xargs)
|
|
fi
|
|
|
|
# Function to check if server is running
|
|
wait_for_server() {
|
|
echo "Waiting for server to be ready..."
|
|
max_attempts=30
|
|
attempt=1
|
|
|
|
while [ $attempt -le $max_attempts ]; do
|
|
# Check if the port is listening (simpler check that doesn't require auth)
|
|
if nc -z localhost ${PORT:-9621} 2>/dev/null || timeout 1 bash -c "cat < /dev/null > /dev/tcp/localhost/${PORT:-9621}" 2>/dev/null; then
|
|
echo "✓ Server port is listening!"
|
|
sleep 2 # Give server a bit more time to fully initialize
|
|
return 0
|
|
fi
|
|
echo " Attempt $attempt/$max_attempts: Server not ready yet, waiting..."
|
|
sleep 1
|
|
attempt=$((attempt + 1))
|
|
done
|
|
|
|
echo "⚠ Server startup check timed out after $max_attempts seconds"
|
|
return 0 # Continue anyway
|
|
}
|
|
|
|
# Initialize demo tenants if environment variable is set
|
|
if [ "${INIT_DEMO_TENANTS}" = "true" ] || [ "${INIT_DEMO_TENANTS}" = "1" ]; then
|
|
echo "Demo tenant initialization enabled"
|
|
# Note: We'll initialize tenants after server starts
|
|
fi
|
|
|
|
echo "🚀 Starting LightRAG Server..."
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
# Start the server in background
|
|
python -m lightrag.api.lightrag_server &
|
|
SERVER_PID=$!
|
|
|
|
# Wait for server to be ready
|
|
wait_for_server
|
|
|
|
# Initialize demo tenants if enabled
|
|
if [ "${INIT_DEMO_TENANTS}" = "true" ] || [ "${INIT_DEMO_TENANTS}" = "1" ]; then
|
|
echo ""
|
|
echo "📚 Initializing demo tenants..."
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
if [ -f /app/scripts/init_demo_tenants.py ]; then
|
|
python /app/scripts/init_demo_tenants.py || echo "⚠ Demo tenant initialization completed with warnings"
|
|
echo ""
|
|
else
|
|
echo "⚠ Demo tenant script not found at /app/scripts/init_demo_tenants.py"
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo "✅ LightRAG is ready!"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
# Wait for server process
|
|
wait $SERVER_PID
|