90 lines
3.0 KiB
Bash
90 lines
3.0 KiB
Bash
#!/bin/bash
|
|
# =============================================================================
|
|
# Presence Service - Rebuild Kafka Script
|
|
# =============================================================================
|
|
# Rebuilds Kafka container to apply new configuration.
|
|
# =============================================================================
|
|
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
|
|
echo -e "${YELLOW}🔄 Rebuilding Kafka containers...${NC}"
|
|
echo ""
|
|
|
|
cd "$PROJECT_DIR"
|
|
|
|
# 1. Stop Presence Service (if running)
|
|
echo -e "${BLUE}Step 1: Stop Presence Service${NC}"
|
|
PID=$(lsof -ti :3011 2>/dev/null)
|
|
if [ ! -z "$PID" ]; then
|
|
echo "Stopping Presence Service (PID: $PID)..."
|
|
kill $PID 2>/dev/null || true
|
|
sleep 2
|
|
echo -e "${GREEN}✓ Presence Service stopped${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠️ Presence Service is not running${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# 2. Stop and remove Kafka and Zookeeper containers
|
|
echo -e "${BLUE}Step 2: Stop and remove old containers${NC}"
|
|
docker compose -f docker-compose.dev.yml stop kafka zookeeper 2>/dev/null || true
|
|
docker compose -f docker-compose.dev.yml rm -f kafka zookeeper 2>/dev/null || true
|
|
echo -e "${GREEN}✓ Old containers removed${NC}"
|
|
echo ""
|
|
|
|
# 3. Recreate containers
|
|
echo -e "${BLUE}Step 3: Create new containers${NC}"
|
|
docker compose -f docker-compose.dev.yml up -d zookeeper
|
|
echo "Waiting for Zookeeper to start..."
|
|
sleep 5
|
|
|
|
docker compose -f docker-compose.dev.yml up -d kafka
|
|
echo "Waiting for Kafka to start..."
|
|
sleep 20
|
|
echo -e "${GREEN}✓ Kafka containers created${NC}"
|
|
echo ""
|
|
|
|
# 4. Verify configuration
|
|
echo -e "${BLUE}Step 4: Verify configuration${NC}"
|
|
CONTAINER_NAME=$(docker ps --filter "name=presence-kafka" --format "{{.Names}}" | head -1)
|
|
|
|
if [ -z "$CONTAINER_NAME" ]; then
|
|
echo -e "${RED}✗ Kafka container not found${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Container: $CONTAINER_NAME"
|
|
|
|
# Check if Kafka is responding
|
|
if docker exec "$CONTAINER_NAME" nc -z localhost 29092 2>/dev/null; then
|
|
echo -e "${GREEN}✓ Kafka internal port (29092) is accessible${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠️ Kafka internal port not yet available${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# 5. Test external connection
|
|
echo -e "${BLUE}Step 5: Test Kafka connection${NC}"
|
|
if nc -zv localhost 9092 2>&1 | grep -q "succeeded\|Connected"; then
|
|
echo -e "${GREEN}✓ Kafka external port (9092) is accessible${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠️ Kafka external port may need more time to start${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
echo -e "${YELLOW}======================================${NC}"
|
|
echo -e "${GREEN}✓ Kafka rebuild complete!${NC}"
|
|
echo -e "${YELLOW}======================================${NC}"
|
|
echo ""
|
|
echo -e "${BLUE}Next steps:${NC}"
|
|
echo "1. Start Presence Service: npm run start:dev"
|
|
echo "2. Run health check: ./scripts/health-check.sh"
|
|
echo "3. Run quick tests: ./scripts/quick-test.sh"
|