@@ -62,25 +62,103 @@ For detailed documentation, see: docs/SETUP.md
6262EOF
6363}
6464
65+ # Install Docker
66+ install_docker () {
67+ print_info " Installing Docker and Docker Compose..."
68+
69+ # Detect operating system
70+ if [ -f /etc/os-release ]; then
71+ . /etc/os-release
72+ if [[ " $ID " != " ubuntu" && " $ID " != " debian" ]]; then
73+ print_error " Unsupported operating system: $ID . This script supports only Ubuntu/Debian-based systems."
74+ exit 1
75+ fi
76+ else
77+ print_error " Unable to detect operating system. This script supports only Ubuntu/Debian-based systems."
78+ exit 1
79+ fi
80+
81+ # Update package index
82+ sudo apt-get update
83+
84+ # Install required packages
85+ sudo apt-get install -y \
86+ ca-certificates \
87+ curl \
88+ gnupg \
89+ lsb-release
90+
91+ # Add Docker's official GPG key
92+ sudo mkdir -m 0755 -p /etc/apt/keyrings
93+ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
94+
95+ # Set up the repository
96+ echo \
97+ " deb [arch=$( dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
98+ $( lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
99+
100+ # Update package index with Docker packages
101+ sudo apt-get update
102+
103+ # Install Docker Engine and Docker Compose
104+ sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
105+
106+ # Add current user to docker group
107+ sudo usermod -aG docker $USER
108+
109+ print_success " Docker and Docker Compose installed successfully!"
110+ print_warning " Please log out and log back in for group changes to take effect."
111+ print_info " Or run: newgrp docker"
112+ }
113+
65114# Check prerequisites
66115check_prerequisites () {
67116 print_info " Checking prerequisites..."
68117
69118 # Check Docker
70119 if ! command -v docker & > /dev/null; then
71- print_error " Docker is not installed. Please install Docker Desktop."
72- exit 1
120+ print_warning " Docker is not installed."
121+ echo -n " Would you like to install Docker and Docker Compose automatically? (y/N): "
122+ read -r response
123+ if [[ " $response " =~ ^[Yy]$ ]]; then
124+ install_docker
125+ print_info " Please restart your terminal session and run the script again."
126+ exit 0
127+ else
128+ print_error " Docker is required. Please install Docker Desktop manually."
129+ exit 1
130+ fi
73131 fi
74132
75133 # Check Docker Compose
76- if ! command -v docker-compose & > /dev/null; then
77- print_error " Docker Compose is not installed. Please install Docker Compose."
78- exit 1
134+ if ! command -v docker compose & > /dev/null; then
135+ print_warning " Docker Compose is not installed."
136+ echo -n " Would you like to install Docker Compose automatically? (y/N): "
137+ read -r response
138+ if [[ " $response " =~ ^[Yy]$ ]]; then
139+ # Install Docker Compose plugin
140+ sudo apt-get update
141+ sudo apt-get install -y docker-compose-plugin
142+ print_success " Docker Compose installed successfully!"
143+ else
144+ print_error " Docker Compose is required. Please install Docker Compose manually."
145+ exit 1
146+ fi
79147 fi
80148
81149 # Check Git (optional but recommended)
82150 if ! command -v git & > /dev/null; then
83151 print_warning " Git is not installed. Some features may not work optimally."
152+ echo -n " Would you like to install Git? (y/N): "
153+ read -r response
154+ if [[ " $response " =~ ^[Yy]$ ]]; then
155+ print_info " Installing Git..."
156+ sudo apt-get update
157+ sudo apt-get install -y git
158+ print_success " Git installed successfully!"
159+ else
160+ print_info " Continuing without Git. Some features may be limited."
161+ fi
84162 fi
85163
86164 print_success " Prerequisites check completed"
108186 print_info " Starting development services..."
109187
110188 # Start development services
111- docker- compose up -d
189+ docker compose up -d
112190
113191 print_success " Development environment is running!"
114192 echo " "
154232 print_info " Starting production services..."
155233
156234 # Start production services with HTTPS by default
157- docker- compose -f docker- compose.prod.yml up -d
235+ docker compose -f docker compose.prod.yml up -d
158236
159237 print_success " Standard production environment is running!"
160238 show_access_info
@@ -189,10 +267,10 @@ GPU_WORKERS=1
189267EOF
190268
191269 print_info " Downloading AI models..."
192- docker- compose -f docker- compose.yml -f docker- compose.genai.yml --profile setup run --rm model-downloader
270+ docker compose -f docker compose.yml -f docker compose.genai.yml --profile setup run --rm model-downloader
193271
194272 print_info " Starting GenAI services..."
195- docker- compose -f docker- compose.yml -f docker- compose.genai.yml up -d
273+ docker compose -f docker compose.yml -f docker compose.genai.yml up -d
196274
197275 print_success " GenAI environment is running!"
198276 show_access_info
@@ -244,7 +322,7 @@ setup_standard_https() {
244322 ./scripts/enhanced-ssl-manager.sh setup-prod " $DOMAIN_NAME " " $CERTBOT_EMAIL "
245323
246324 print_info " Restarting services with Let's Encrypt..."
247- docker- compose -f docker- compose.prod.yml restart traefik
325+ docker compose -f docker compose.prod.yml restart traefik
248326
249327 print_success " HTTPS environment with Let's Encrypt is running!"
250328}
@@ -266,8 +344,8 @@ setup_genai_https() {
266344 ./scripts/enhanced-ssl-manager.sh setup-prod " $DOMAIN_NAME " " $CERTBOT_EMAIL "
267345
268346 print_info " Restarting services with Let's Encrypt..."
269- docker- compose -f docker- compose.yml -f docker- compose.genai.yml down
270- docker- compose -f docker- compose.prod.yml --profile genai up -d
347+ docker compose -f docker compose.yml -f docker compose.genai.yml down
348+ docker compose -f docker compose.prod.yml --profile genai up -d
271349
272350 print_success " GenAI + HTTPS environment with Let's Encrypt is running!"
273351}
@@ -287,7 +365,7 @@ show_access_info() {
287365 print_info " Management Commands:"
288366 print_info " • Check status: ${CYAN} ./setup.sh --status${NC} "
289367 print_info " • Validate: ${CYAN} ./setup.sh --validate${NC} "
290- print_info " • View logs: ${CYAN} docker- compose logs -f${NC} "
368+ print_info " • View logs: ${CYAN} docker compose logs -f${NC} "
291369 echo " "
292370}
293371
@@ -300,7 +378,7 @@ validate_deployment() {
300378# Show deployment status
301379show_status () {
302380 print_info " Deployment Status:"
303- docker- compose ps
381+ docker compose ps
304382
305383 echo " "
306384 print_info " Service Health:"
0 commit comments