178 lines
4.8 KiB
Bash
178 lines
4.8 KiB
Bash
#!/bin/bash
|
|
|
|
# SerpentRace Development Environment Setup and Management Script
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Functions
|
|
print_info() {
|
|
echo -e "${GREEN}[INFO]${NC} $1"
|
|
}
|
|
|
|
print_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
# Check if Docker and Docker Compose are installed
|
|
check_dependencies() {
|
|
print_info "Checking dependencies..."
|
|
|
|
if ! command -v docker &> /dev/null; then
|
|
print_error "Docker is not installed. Please install Docker first."
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v docker-compose &> /dev/null; then
|
|
print_error "Docker Compose is not installed. Please install Docker Compose first."
|
|
exit 1
|
|
fi
|
|
|
|
print_info "All dependencies are installed."
|
|
}
|
|
|
|
# Start development environment
|
|
dev_start() {
|
|
print_info "Starting SerpentRace development environment..."
|
|
cd SerpentRace_Docker
|
|
docker-compose -f docker-compose.dev.yml --env-file .env.dev up --build -d
|
|
cd ..
|
|
print_info "Development environment started successfully!"
|
|
print_info "Services available at:"
|
|
echo " - Frontend: http://localhost:5173"
|
|
echo " - Backend API: http://localhost:3000"
|
|
echo " - PostgreSQL: localhost:5432"
|
|
echo " - Redis: localhost:6379"
|
|
echo " - MinIO: http://localhost:9001 (admin: serpentrace / serpentrace123!)"
|
|
echo " - PgAdmin: http://localhost:8080 (admin@serpentrace.dev / admin)"
|
|
echo " - Redis Commander: http://localhost:8081"
|
|
}
|
|
|
|
# Start development environment with file watchers
|
|
dev_watch() {
|
|
print_info "Starting SerpentRace development environment with file watchers..."
|
|
print_info "This will automatically sync file changes and rebuild containers as needed"
|
|
cd SerpentRace_Docker
|
|
docker-compose -f docker-compose.watch.yml --env-file .env.dev up --build --watch
|
|
cd ..
|
|
}
|
|
|
|
# Stop development environment
|
|
dev_stop() {
|
|
print_info "Stopping SerpentRace development environment..."
|
|
cd SerpentRace_Docker
|
|
docker-compose -f docker-compose.dev.yml down
|
|
cd ..
|
|
print_info "Development environment stopped."
|
|
}
|
|
|
|
# Start production environment
|
|
prod_start() {
|
|
print_warning "Starting SerpentRace production environment..."
|
|
print_warning "Make sure to update .env.prod with secure values!"
|
|
cd SerpentRace_Docker
|
|
docker-compose -f docker-compose.prod.yml --env-file .env.prod up --build -d
|
|
cd ..
|
|
print_info "Production environment started!"
|
|
print_info "Services available at:"
|
|
echo " - Frontend: http://localhost"
|
|
echo " - Backend API: http://localhost:3000"
|
|
}
|
|
|
|
# Stop production environment
|
|
prod_stop() {
|
|
print_info "Stopping SerpentRace production environment..."
|
|
cd SerpentRace_Docker
|
|
docker-compose -f docker-compose.prod.yml down
|
|
cd ..
|
|
print_info "Production environment stopped."
|
|
}
|
|
|
|
# Show logs
|
|
show_logs() {
|
|
local service=$1
|
|
if [ -z "$service" ]; then
|
|
print_info "Showing logs for all services..."
|
|
cd SerpentRace_Docker
|
|
docker-compose -f docker-compose.dev.yml logs -f
|
|
cd ..
|
|
else
|
|
print_info "Showing logs for $service..."
|
|
cd SerpentRace_Docker
|
|
docker-compose -f docker-compose.dev.yml logs -f "$service"
|
|
cd ..
|
|
fi
|
|
}
|
|
|
|
# Clean up Docker resources
|
|
cleanup() {
|
|
print_warning "Cleaning up Docker resources..."
|
|
cd SerpentRace_Docker
|
|
docker-compose -f docker-compose.dev.yml down -v
|
|
docker-compose -f docker-compose.prod.yml down -v
|
|
cd ..
|
|
docker system prune -f
|
|
print_info "Cleanup completed."
|
|
}
|
|
|
|
# Show help
|
|
show_help() {
|
|
echo "SerpentRace Docker Management Script"
|
|
echo ""
|
|
echo "Usage: $0 [COMMAND]"
|
|
echo ""
|
|
echo "Commands:"
|
|
echo " dev:start Start development environment with hot reload"
|
|
echo " dev:watch Start development environment with file watchers (auto-rebuild)"
|
|
echo " dev:stop Stop development environment"
|
|
echo " prod:start Start production environment"
|
|
echo " prod:stop Stop production environment"
|
|
echo " logs [service] Show logs (optionally for specific service)"
|
|
echo " cleanup Clean up all Docker resources"
|
|
echo " help Show this help message"
|
|
echo ""
|
|
echo "Examples:"
|
|
echo " $0 dev:start"
|
|
echo " $0 dev:watch"
|
|
echo " $0 logs backend"
|
|
echo " $0 cleanup"
|
|
}
|
|
|
|
# Main script logic
|
|
case "$1" in
|
|
"dev:start")
|
|
check_dependencies
|
|
dev_start
|
|
;;
|
|
"dev:watch")
|
|
check_dependencies
|
|
dev_watch
|
|
;;
|
|
"dev:stop")
|
|
dev_stop
|
|
;;
|
|
"prod:start")
|
|
check_dependencies
|
|
prod_start
|
|
;;
|
|
"prod:stop")
|
|
prod_stop
|
|
;;
|
|
"logs")
|
|
show_logs "$2"
|
|
;;
|
|
"cleanup")
|
|
cleanup
|
|
;;
|
|
"help"|*)
|
|
show_help
|
|
;;
|
|
esac
|