Spaces:
Runtime error
Runtime error
File size: 6,858 Bytes
d8efa31 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 |
#!/bin/bash
# HTTrack Scraper - Quick Deployment Script
# This script helps you quickly deploy the HTTrack Gradio app
set -e # Exit on error
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Print colored message
print_message() {
local color=$1
shift
echo -e "${color}$@${NC}"
}
print_message $BLUE "βββββββββββββββββββββββββββββββββββββββββββββ"
print_message $BLUE "β HTTrack Website Scraper Deployment β"
print_message $BLUE "βββββββββββββββββββββββββββββββββββββββββββββ"
echo
# Check if Docker is installed
check_docker() {
if ! command -v docker &> /dev/null; then
print_message $RED "β Docker is not installed!"
echo "Please install Docker from: https://docs.docker.com/get-docker/"
exit 1
fi
print_message $GREEN "β
Docker is installed"
}
# Check if Docker Compose is available
check_docker_compose() {
if docker compose version &> /dev/null; then
DOCKER_COMPOSE_CMD="docker compose"
print_message $GREEN "β
Docker Compose V2 is available"
elif command -v docker-compose &> /dev/null; then
DOCKER_COMPOSE_CMD="docker-compose"
print_message $GREEN "β
Docker Compose V1 is available"
else
print_message $YELLOW "β οΈ Docker Compose not found, will use Docker only"
DOCKER_COMPOSE_CMD=""
fi
}
# Build Docker image
build_image() {
print_message $BLUE "π¨ Building Docker image..."
docker build -t httrack-scraper:latest . || {
print_message $RED "β Failed to build Docker image"
exit 1
}
print_message $GREEN "β
Docker image built successfully"
}
# Deploy with Docker Compose
deploy_compose() {
print_message $BLUE "π Deploying with Docker Compose..."
$DOCKER_COMPOSE_CMD up -d || {
print_message $RED "β Failed to deploy with Docker Compose"
exit 1
}
print_message $GREEN "β
Deployed successfully with Docker Compose"
}
# Deploy with Docker only
deploy_docker() {
print_message $BLUE "π Deploying with Docker..."
# Stop and remove existing container if it exists
docker stop httrack-scraper 2>/dev/null || true
docker rm httrack-scraper 2>/dev/null || true
# Run new container
docker run -d \
--name httrack-scraper \
-p 7860:7860 \
--restart unless-stopped \
httrack-scraper:latest || {
print_message $RED "β Failed to deploy with Docker"
exit 1
}
print_message $GREEN "β
Deployed successfully with Docker"
}
# Show deployment info
show_info() {
echo
print_message $GREEN "βββββββββββββββββββββββββββββββββββββββββββββ"
print_message $GREEN "β Deployment Successful! π β"
print_message $GREEN "βββββββββββββββββββββββββββββββββββββββββββββ"
echo
print_message $BLUE "π Access the app at: http://localhost:7860"
print_message $BLUE "π³ Container name: httrack-scraper"
echo
print_message $YELLOW "Useful commands:"
echo " β’ View logs: docker logs -f httrack-scraper"
echo " β’ Stop app: docker stop httrack-scraper"
echo " β’ Start app: docker start httrack-scraper"
echo " β’ Restart app: docker restart httrack-scraper"
if [ -n "$DOCKER_COMPOSE_CMD" ]; then
echo " β’ Compose logs: $DOCKER_COMPOSE_CMD logs -f"
echo " β’ Compose stop: $DOCKER_COMPOSE_CMD down"
fi
echo
}
# Check container health
check_health() {
print_message $BLUE "π₯ Checking container health..."
sleep 3
if docker ps | grep -q httrack-scraper; then
print_message $GREEN "β
Container is running"
# Try to curl the endpoint
if command -v curl &> /dev/null; then
if curl -s -f http://localhost:7860/ > /dev/null; then
print_message $GREEN "β
App is responding"
else
print_message $YELLOW "β οΈ App not responding yet (may need more time to start)"
fi
fi
else
print_message $RED "β Container is not running"
print_message $YELLOW "Check logs with: docker logs httrack-scraper"
exit 1
fi
}
# Main deployment flow
main() {
# Pre-flight checks
check_docker
check_docker_compose
echo
# Build
build_image
echo
# Deploy based on available tools
if [ -n "$DOCKER_COMPOSE_CMD" ]; then
deploy_compose
else
deploy_docker
fi
# Health check
check_health
# Show info
show_info
}
# Handle script arguments
case "${1:-}" in
"build")
check_docker
build_image
;;
"deploy")
main
;;
"stop")
print_message $BLUE "π Stopping application..."
if [ -n "$DOCKER_COMPOSE_CMD" ]; then
check_docker_compose
$DOCKER_COMPOSE_CMD down
else
docker stop httrack-scraper
fi
print_message $GREEN "β
Application stopped"
;;
"restart")
print_message $BLUE "π Restarting application..."
if [ -n "$DOCKER_COMPOSE_CMD" ]; then
check_docker_compose
$DOCKER_COMPOSE_CMD restart
else
docker restart httrack-scraper
fi
print_message $GREEN "β
Application restarted"
;;
"logs")
if [ -n "$DOCKER_COMPOSE_CMD" ]; then
check_docker_compose
$DOCKER_COMPOSE_CMD logs -f
else
docker logs -f httrack-scraper
fi
;;
"clean")
print_message $YELLOW "π§Ή Cleaning up..."
docker stop httrack-scraper 2>/dev/null || true
docker rm httrack-scraper 2>/dev/null || true
docker rmi httrack-scraper:latest 2>/dev/null || true
print_message $GREEN "β
Cleanup complete"
;;
*)
print_message $YELLOW "Usage: $0 {build|deploy|stop|restart|logs|clean}"
echo
echo "Commands:"
echo " build - Build the Docker image only"
echo " deploy - Build and deploy the application"
echo " stop - Stop the running application"
echo " restart - Restart the application"
echo " logs - View application logs"
echo " clean - Remove container and image"
echo
echo "Quick start: $0 deploy"
exit 1
;;
esac |