veza/scripts/lab/start_infra.sh

50 lines
1.9 KiB
Bash
Executable file

#!/bin/bash
set -euo pipefail
# scripts/lab/start_infra.sh
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}🚀 Starting Lab Infrastructure (Postgres, Redis, RabbitMQ)...${NC}"
if ! command -v docker &> /dev/null; then
echo "❌ Docker could not be found. Please install Docker."
exit 1
fi
# Launch Docker Compose in detached mode
docker compose -f infra/docker-compose.lab.yml up -d
echo -e "${YELLOW}⏳ Waiting for services to be healthy...${NC}"
# Simple wait loop for Postgres
TIMEOUT=60
COUNT=0
until docker exec veza-lab-postgres pg_isready -U veza -d veza_lab > /dev/null 2>&1; do
sleep 1
COUNT=$((COUNT+1))
if [ $COUNT -ge $TIMEOUT ]; then
echo "❌ Timed out waiting for Postgres to be ready."
exit 1
fi
echo -n "."
done
echo ""
echo -e "${GREEN}✅ Infrastructure is UP!${NC}"
echo "---------------------------------------------------"
# Create separate databases for services to avoid migration collisions (sqlx)
echo -e "${YELLOW}🛠️ Creating separate databases (veza_chat, veza_stream)...${NC}"
docker exec veza-lab-postgres psql -U veza -d veza_lab -c "CREATE DATABASE veza_chat;" || true
docker exec veza-lab-postgres psql -U veza -d veza_lab -c "CREATE DATABASE veza_stream;" || true
# Install required extensions in veza_chat
echo -e "${YELLOW}🔌 Installing extensions in veza_chat...${NC}"
docker exec veza-lab-postgres psql -U veza -d veza_chat -c 'CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; CREATE EXTENSION IF NOT EXISTS "pgcrypto"; CREATE EXTENSION IF NOT EXISTS "btree_gin"; CREATE EXTENSION IF NOT EXISTS "pg_trgm";' || true
docker compose -f infra/docker-compose.lab.yml ps
echo "---------------------------------------------------"
echo "Use the following DSN for your applications:"
echo "VEZA_LAB_DSN='postgres://veza:veza_password@localhost:5432/veza_lab?sslmode=disable'"