125 lines
4.2 KiB
Bash
Executable file
125 lines
4.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# CMC Sales Development Environment Setup Script
|
|
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 CMC Sales Development Environment${NC}"
|
|
echo ""
|
|
|
|
# Function to check if command exists
|
|
command_exists() {
|
|
command -v "$1" >/dev/null 2>&1
|
|
}
|
|
|
|
# Check prerequisites
|
|
echo -e "${YELLOW}📋 Checking prerequisites...${NC}"
|
|
|
|
if ! command_exists docker; then
|
|
echo -e "${RED}❌ Docker is not installed${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
if ! command_exists docker-compose; then
|
|
echo -e "${RED}❌ Docker Compose is not installed${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}✅ Prerequisites satisfied${NC}"
|
|
echo ""
|
|
|
|
# Check Docker Compose version for watch support
|
|
DOCKER_COMPOSE_VERSION=$(docker compose version --short 2>/dev/null || echo "unknown")
|
|
SUPPORTS_WATCH=false
|
|
|
|
if [[ "$DOCKER_COMPOSE_VERSION" != "unknown" ]]; then
|
|
# Check if version is 2.22.0 or higher (when watch was introduced)
|
|
if docker compose version 2>/dev/null | grep -q "Docker Compose version v2\.\([2-9][2-9]\|[3-9][0-9]\)"; then
|
|
SUPPORTS_WATCH=true
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}🏗️ Building and starting services...${NC}"
|
|
|
|
# Ask user about watch mode
|
|
if [[ "$SUPPORTS_WATCH" == "true" ]]; then
|
|
echo -e "${BLUE}💡 Docker Compose watch mode is available for automatic rebuilds on file changes.${NC}"
|
|
read -p "Would you like to enable watch mode? (Y/n): " enable_watch
|
|
if [[ ! $enable_watch =~ ^[Nn]$ ]]; then
|
|
USE_WATCH=true
|
|
else
|
|
USE_WATCH=false
|
|
fi
|
|
else
|
|
echo -e "${YELLOW}⚠️ Docker Compose watch mode not available (requires v2.22.0+)${NC}"
|
|
USE_WATCH=false
|
|
fi
|
|
|
|
if [[ "$USE_WATCH" == "true" ]]; then
|
|
echo -e "${GREEN}🔄 Starting services with watch mode enabled...${NC}"
|
|
echo -e "${BLUE} 📁 Watching for changes in: go/, php/app/webroot/css/, php/app/webroot/js/${NC}"
|
|
echo -e "${BLUE} 🔄 Services will automatically rebuild on file changes${NC}"
|
|
echo -e "${BLUE} ⏹️ Press Ctrl+C to stop all services${NC}"
|
|
echo ""
|
|
|
|
# Start with watch mode (this will run in foreground)
|
|
docker compose up --build --watch
|
|
else
|
|
# Traditional mode
|
|
docker compose up --build -d
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}⏳ Waiting for services to be ready...${NC}"
|
|
sleep 10
|
|
|
|
# Check service health
|
|
echo -e "${YELLOW}🏥 Checking service health...${NC}"
|
|
|
|
# Check database
|
|
if docker compose exec -T db mariadb-admin ping -h localhost -u cmc -p'xVRQI&cA?7AU=hqJ!%au' --silent; then
|
|
echo -e "${GREEN}✅ Database is ready${NC}"
|
|
else
|
|
echo -e "${RED}❌ Database is not ready${NC}"
|
|
fi
|
|
|
|
# Check Go app
|
|
if curl -s http://localhost:8080/api/v1/health > /dev/null; then
|
|
echo -e "${GREEN}✅ Go application is ready${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠️ Go application might still be starting...${NC}"
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${GREEN}🎉 Development environment is running!${NC}"
|
|
echo ""
|
|
echo -e "${BLUE}📱 Access your applications:${NC}"
|
|
echo -e " 🏛️ CakePHP (Legacy): ${GREEN}http://cmclocal${NC} (add to /etc/hosts: 127.0.0.1 cmclocal)"
|
|
echo -e " 🚀 Go (Modern): ${GREEN}http://localhost:8080${NC}"
|
|
echo -e " 🗄️ Database: ${GREEN}localhost:3306${NC} (user: cmc, pass: xVRQI&cA?7AU=hqJ!%au)"
|
|
echo ""
|
|
echo -e "${BLUE}🔧 Useful commands:${NC}"
|
|
echo -e " View logs: ${YELLOW}docker compose logs -f${NC}"
|
|
echo -e " Stop services: ${YELLOW}docker compose down${NC}"
|
|
echo -e " Restart Go app: ${YELLOW}docker compose restart cmc-go${NC}"
|
|
echo -e " Restart PHP app: ${YELLOW}docker compose restart cmc-php${NC}"
|
|
echo -e " Enable watch mode: ${YELLOW}docker compose up --watch${NC}"
|
|
echo ""
|
|
echo -e "${BLUE}📚 Documentation:${NC}"
|
|
echo -e " Go app README: ${YELLOW}go/README.md${NC}"
|
|
echo -e " Project guide: ${YELLOW}CLAUDE.md${NC}"
|
|
echo ""
|
|
|
|
# Optional: Follow logs
|
|
read -p "Would you like to follow the logs? (y/N): " follow_logs
|
|
if [[ $follow_logs =~ ^[Yy]$ ]]; then
|
|
echo -e "${YELLOW}📝 Following logs (Ctrl+C to exit)...${NC}"
|
|
docker compose logs -f
|
|
fi
|
|
fi |