/home/suroeste/public_html/payments.transportessuroeste.com/scripts
NameSizeModeActions
scripts/-0755rm
backup.sh26380644editdlrm
deploy.sh41270644editdlrm
generate_report.py308390644editdlrm
Edit: /home/suroeste/public_html/payments.transportessuroeste.com/scripts/deploy.sh (4127B)
#!/usr/bin/env bash # ============================================================================ # TRANSPORTES SUROESTE - Deployment Script # ============================================================================ # Usage: ./scripts/deploy.sh [environment] # Environments: staging, production # ============================================================================ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" ENVIRONMENT="${1:-production}" DATE=$(date +%Y%m%d_%H%M%S) # Colors GREEN='\033[0;32m' YELLOW='\033[0;33m' RED='\033[0;31m' CYAN='\033[0;36m' RESET='\033[0m' log() { echo -e "${CYAN}[$(date '+%H:%M:%S')]${RESET} $1"; } ok() { echo -e "${GREEN}[OK]${RESET} $1"; } warn() { echo -e "${YELLOW}[WARN]${RESET} $1"; } err() { echo -e "${RED}[ERROR]${RESET} $1"; } # ============================================================================ # Pre-flight checks # ============================================================================ log "Starting deployment to ${YELLOW}${ENVIRONMENT}${RESET}..." echo "" # Check .env exists if [ ! -f "${PROJECT_DIR}/.env" ]; then err ".env file not found. Copy .env.example and configure." exit 1 fi ok ".env file found" # Check Docker if ! command -v docker &> /dev/null; then err "Docker is not installed" exit 1 fi ok "Docker available: $(docker --version | head -1)" # Check Docker Compose if ! docker compose version &> /dev/null; then err "Docker Compose is not available" exit 1 fi ok "Docker Compose available" # Validate environment if [[ "$ENVIRONMENT" != "staging" && "$ENVIRONMENT" != "production" ]]; then err "Invalid environment: ${ENVIRONMENT}. Use 'staging' or 'production'." exit 1 fi # ============================================================================ # Backup before deploy # ============================================================================ echo "" log "Creating pre-deployment backup..." if docker ps --format '{{.Names}}' | grep -q "^ts-mysql$"; then bash "${SCRIPT_DIR}/backup.sh" || warn "Backup failed, continuing..." else warn "MySQL container not running, skipping backup" fi # ============================================================================ # Build and deploy # ============================================================================ echo "" log "Building containers..." cd "$PROJECT_DIR" COMPOSE_FILES="-f docker-compose.yml -f docker-compose.prod.yml" # Build docker compose ${COMPOSE_FILES} build --no-cache ok "Build complete" # Stop old containers log "Stopping current services..." docker compose ${COMPOSE_FILES} down --timeout 30 ok "Services stopped" # Start new containers log "Starting new services..." docker compose ${COMPOSE_FILES} up -d ok "Services started" # ============================================================================ # Health check # ============================================================================ echo "" log "Waiting for services to be healthy..." MAX_RETRIES=30 RETRY=0 while [ $RETRY -lt $MAX_RETRIES ]; do RETRY=$((RETRY + 1)) if curl -sf http://localhost/api/v1/health > /dev/null 2>&1; then ok "Health check passed" break fi if [ $RETRY -eq $MAX_RETRIES ]; then err "Health check failed after ${MAX_RETRIES} attempts" warn "Rolling back..." docker compose ${COMPOSE_FILES} logs --tail=50 exit 1 fi sleep 2 done # ============================================================================ # Summary # ============================================================================ echo "" echo -e "${GREEN}=============================================${RESET}" echo -e "${GREEN} Deployment to ${ENVIRONMENT} complete!${RESET}" echo -e "${GREEN}=============================================${RESET}" echo "" docker compose ${COMPOSE_FILES} ps echo "" log "Deployment finished at $(date)"