namelessai commited on
Commit
d8efa31
Β·
verified Β·
1 Parent(s): bc8dcba

Create deploy.sh

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