105 lines
3 KiB
Bash
Executable file
105 lines
3 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${BLUE}🚀 Starting Veza local development environment...${NC}"
|
|
|
|
# Check prerequisites
|
|
echo -e "${YELLOW}📋 Checking prerequisites...${NC}"
|
|
|
|
command -v docker >/dev/null 2>&1 || {
|
|
echo -e "${RED}❌ Docker is required but not installed. Aborting.${NC}" >&2;
|
|
exit 1;
|
|
}
|
|
|
|
command -v docker-compose >/dev/null 2>&1 || {
|
|
echo -e "${RED}❌ Docker Compose is required but not installed. Aborting.${NC}" >&2;
|
|
exit 1;
|
|
}
|
|
|
|
# Check if Docker is running
|
|
if ! docker info >/dev/null 2>&1; then
|
|
echo -e "${RED}❌ Docker daemon is not running. Please start Docker and try again.${NC}" >&2;
|
|
exit 1;
|
|
fi
|
|
|
|
echo -e "${GREEN}✅ Prerequisites check passed${NC}"
|
|
|
|
# Copy .env.example if .env doesn't exist
|
|
if [ ! -f .env ]; then
|
|
if [ -f .env.example ]; then
|
|
echo -e "${YELLOW}📝 Creating .env file from .env.example...${NC}"
|
|
cp .env.example .env
|
|
echo -e "${YELLOW}⚠️ Please review and update .env file with your configuration${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠️ .env.example not found. You may need to create .env manually.${NC}"
|
|
fi
|
|
fi
|
|
|
|
# Check if docker-compose.yml exists
|
|
if [ ! -f docker-compose.yml ]; then
|
|
echo -e "${RED}❌ docker-compose.yml not found. Aborting.${NC}" >&2;
|
|
exit 1;
|
|
fi
|
|
|
|
# Build and start services
|
|
echo -e "${BLUE}🔨 Building and starting services...${NC}"
|
|
docker-compose up -d --build
|
|
|
|
echo -e "${GREEN}✅ Services started successfully!${NC}"
|
|
|
|
# Wait for services to be ready
|
|
echo -e "${YELLOW}📊 Waiting for services to be healthy...${NC}"
|
|
sleep 10
|
|
|
|
# Check health status
|
|
echo -e "${BLUE}📋 Service status:${NC}"
|
|
docker-compose ps
|
|
|
|
# Check health endpoints
|
|
echo -e "${YELLOW}🔍 Checking health endpoints...${NC}"
|
|
|
|
# Function to check health endpoint
|
|
check_health() {
|
|
local service=$1
|
|
local url=$2
|
|
local name=$3
|
|
|
|
if curl -sf "$url" >/dev/null 2>&1; then
|
|
echo -e "${GREEN}✅ ${name} is healthy${NC}"
|
|
return 0
|
|
else
|
|
echo -e "${YELLOW}⚠️ ${name} health check failed (may still be starting)${NC}"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Check backend API
|
|
check_health "backend-api" "http://localhost:8080/health" "Backend API" || true
|
|
|
|
# Check chat server
|
|
check_health "chat-server" "http://localhost:8081/health" "Chat Server" || true
|
|
|
|
# Check stream server
|
|
check_health "stream-server" "http://localhost:8082/health" "Stream Server" || true
|
|
|
|
# Check frontend
|
|
check_health "frontend" "http://localhost:3000" "Frontend" || true
|
|
|
|
echo -e "${GREEN}🎉 Local development environment is ready!${NC}"
|
|
echo -e "${BLUE}📝 Access the services:${NC}"
|
|
echo -e " - Frontend: http://localhost:3000"
|
|
echo -e " - Backend API: http://localhost:8080"
|
|
echo -e " - Chat Server: ws://localhost:8081/ws"
|
|
echo -e " - Stream Server: ws://localhost:8082/stream"
|
|
echo -e ""
|
|
echo -e "${YELLOW}💡 To stop services, run: docker-compose down${NC}"
|
|
echo -e "${YELLOW}💡 To view logs, run: docker-compose logs -f${NC}"
|
|
|