#!/bin/bash # LMeterX Quick Deployment Script # Use pre-built Docker images to quickly start all services set -eo pipefail echo "๐Ÿš€ LMeterX Quick Deployment Script" echo "==================================" # Check if Docker is installed if ! command -v docker &> /dev/null; then echo "โŒ Error: Docker is not installed, please install Docker first" exit 1 fi # Determine which Docker Compose command to use COMPOSE_CMD="" if command -v docker-compose &> /dev/null; then COMPOSE_CMD="docker-compose" elif docker compose version &> /dev/null 2>&1; then COMPOSE_CMD="docker compose" else echo "โŒ Error: Docker Compose is not installed or available" echo " Please install Docker Compose or ensure Docker includes the compose plugin" exit 1 fi echo "โ„น๏ธ Using Docker Compose command: $COMPOSE_CMD" # Create necessary directories echo "๐Ÿ“ Creating necessary directories..." mkdir -p logs # Download necessary configuration files (if not exists) if [ ! -f "docker-compose.yml" ]; then echo "๐Ÿ“ฅ Downloading docker-compose.yml..." curl -fsSL -o docker-compose.yml https://raw.githubusercontent.com/MigoXLab/LMeterX/main/docker-compose.yml fi # Download and sync data directory echo "๐Ÿ“ Syncing data directory..." DATA_DIR="data" ARCHIVE_URL="https://codeload.github.com/MigoXLab/LMeterX/tar.gz/refs/heads/main" TMP_DIR="$(mktemp -d)" cleanup_tmp_dir() { if [ -n "$TMP_DIR" ] && [ -d "$TMP_DIR" ]; then rm -rf "$TMP_DIR" fi } trap cleanup_tmp_dir EXIT curl -fsSL "$ARCHIVE_URL" | tar -xz --strip-components=1 -C "$TMP_DIR" LMeterX-main/data if [ ! -d "$TMP_DIR/data" ]; then echo "โŒ Error: Failed to locate data directory in repository archive" exit 1 fi rm -rf "$DATA_DIR" mkdir -p "$DATA_DIR" cp -R "$TMP_DIR/data/." "$DATA_DIR/" # Pull latest images echo "๐Ÿ“ฆ Pulling latest Docker images..." docker pull charmy1220/lmeterx-mysql:latest docker pull charmy1220/lmeterx-be:latest docker pull charmy1220/lmeterx-eng:latest docker pull charmy1220/lmeterx-fe:latest # Stop and clean up old containers (if exists) echo "๐Ÿงน Cleaning up old containers..." $COMPOSE_CMD -f docker-compose.yml down --remove-orphans 2>/dev/null || true # Start services echo "๐Ÿš€ Starting LMeterX services..." $COMPOSE_CMD -f docker-compose.yml up -d # Wait for services to start echo "โณ Waiting for services to start..." sleep 10 # Check service status echo "๐Ÿ” Checking service status..." $COMPOSE_CMD -f docker-compose.yml ps echo "" echo "โœ… LMeterX deployment completed!" echo "" echo "๐Ÿ“‹ Access Information:" echo " ๐ŸŒ Frontend: http://localhost:8080" echo " ๐Ÿ”ง Backend API: http://localhost:5001" echo " โšก Load Testing Engine: http://localhost:5002" echo "" echo "๐Ÿ“ Common Commands:" echo " Check service status: $COMPOSE_CMD -f docker-compose.yml ps" echo " View logs: $COMPOSE_CMD -f docker-compose.yml logs -f" echo " Stop services: $COMPOSE_CMD -f docker-compose.yml down" echo " Restart services: $COMPOSE_CMD -f docker-compose.yml restart" echo "" echo "๐ŸŽ‰ Start using LMeterX for performance testing!"