Skip to content

Commit a7bd534

Browse files
authored
feat: add automatic Docker and Docker Compose installation to setup script
1 parent b1d4ceb commit a7bd534

File tree

1 file changed

+80
-14
lines changed

1 file changed

+80
-14
lines changed

setup.sh

Lines changed: 80 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -62,25 +62,91 @@ For detailed documentation, see: docs/SETUP.md
6262
EOF
6363
}
6464

65+
# Install Docker
66+
install_docker() {
67+
print_info "Installing Docker and Docker Compose..."
68+
69+
# Update package index
70+
sudo apt-get update
71+
72+
# Install required packages
73+
sudo apt-get install -y \
74+
ca-certificates \
75+
curl \
76+
gnupg \
77+
lsb-release
78+
79+
# Add Docker's official GPG key
80+
sudo mkdir -m 0755 -p /etc/apt/keyrings
81+
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
82+
83+
# Set up the repository
84+
echo \
85+
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
86+
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
87+
88+
# Update package index with Docker packages
89+
sudo apt-get update
90+
91+
# Install Docker Engine and Docker Compose
92+
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
93+
94+
# Add current user to docker group
95+
sudo usermod -aG docker $USER
96+
97+
print_success "Docker and Docker Compose installed successfully!"
98+
print_warning "Please log out and log back in for group changes to take effect."
99+
print_info "Or run: newgrp docker"
100+
}
101+
65102
# Check prerequisites
66103
check_prerequisites() {
67104
print_info "Checking prerequisites..."
68105

69106
# Check Docker
70107
if ! command -v docker &> /dev/null; then
71-
print_error "Docker is not installed. Please install Docker Desktop."
72-
exit 1
108+
print_warning "Docker is not installed."
109+
echo -n "Would you like to install Docker and Docker Compose automatically? (y/N): "
110+
read -r response
111+
if [[ "$response" =~ ^[Yy]$ ]]; then
112+
install_docker
113+
print_info "Please restart your terminal session and run the script again."
114+
exit 0
115+
else
116+
print_error "Docker is required. Please install Docker Desktop manually."
117+
exit 1
118+
fi
73119
fi
74120

75121
# 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
122+
if ! command -v docker compose &> /dev/null; then
123+
print_warning "Docker Compose is not installed."
124+
echo -n "Would you like to install Docker Compose automatically? (y/N): "
125+
read -r response
126+
if [[ "$response" =~ ^[Yy]$ ]]; then
127+
# Install Docker Compose plugin
128+
sudo apt-get update
129+
sudo apt-get install -y docker-compose-plugin
130+
print_success "Docker Compose installed successfully!"
131+
else
132+
print_error "Docker Compose is required. Please install Docker Compose manually."
133+
exit 1
134+
fi
79135
fi
80136

81137
# Check Git (optional but recommended)
82138
if ! command -v git &> /dev/null; then
83139
print_warning "Git is not installed. Some features may not work optimally."
140+
echo -n "Would you like to install Git? (y/N): "
141+
read -r response
142+
if [[ "$response" =~ ^[Yy]$ ]]; then
143+
print_info "Installing Git..."
144+
sudo apt-get update
145+
sudo apt-get install -y git
146+
print_success "Git installed successfully!"
147+
else
148+
print_info "Continuing without Git. Some features may be limited."
149+
fi
84150
fi
85151

86152
print_success "Prerequisites check completed"
@@ -108,7 +174,7 @@ EOF
108174
print_info "Starting development services..."
109175

110176
# Start development services
111-
docker-compose up -d
177+
docker compose up -d
112178

113179
print_success "Development environment is running!"
114180
echo ""
@@ -154,7 +220,7 @@ EOF
154220
print_info "Starting production services..."
155221

156222
# Start production services with HTTPS by default
157-
docker-compose -f docker-compose.prod.yml up -d
223+
docker compose -f docker compose.prod.yml up -d
158224

159225
print_success "Standard production environment is running!"
160226
show_access_info
@@ -189,10 +255,10 @@ GPU_WORKERS=1
189255
EOF
190256

191257
print_info "Downloading AI models..."
192-
docker-compose -f docker-compose.yml -f docker-compose.genai.yml --profile setup run --rm model-downloader
258+
docker compose -f docker compose.yml -f docker compose.genai.yml --profile setup run --rm model-downloader
193259

194260
print_info "Starting GenAI services..."
195-
docker-compose -f docker-compose.yml -f docker-compose.genai.yml up -d
261+
docker compose -f docker compose.yml -f docker compose.genai.yml up -d
196262

197263
print_success "GenAI environment is running!"
198264
show_access_info
@@ -244,7 +310,7 @@ setup_standard_https() {
244310
./scripts/enhanced-ssl-manager.sh setup-prod "$DOMAIN_NAME" "$CERTBOT_EMAIL"
245311

246312
print_info "Restarting services with Let's Encrypt..."
247-
docker-compose -f docker-compose.prod.yml restart traefik
313+
docker compose -f docker compose.prod.yml restart traefik
248314

249315
print_success "HTTPS environment with Let's Encrypt is running!"
250316
}
@@ -266,8 +332,8 @@ setup_genai_https() {
266332
./scripts/enhanced-ssl-manager.sh setup-prod "$DOMAIN_NAME" "$CERTBOT_EMAIL"
267333

268334
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
335+
docker compose -f docker compose.yml -f docker compose.genai.yml down
336+
docker compose -f docker compose.prod.yml --profile genai up -d
271337

272338
print_success "GenAI + HTTPS environment with Let's Encrypt is running!"
273339
}
@@ -287,7 +353,7 @@ show_access_info() {
287353
print_info "Management Commands:"
288354
print_info "• Check status: ${CYAN}./setup.sh --status${NC}"
289355
print_info "• Validate: ${CYAN}./setup.sh --validate${NC}"
290-
print_info "• View logs: ${CYAN}docker-compose logs -f${NC}"
356+
print_info "• View logs: ${CYAN}docker compose logs -f${NC}"
291357
echo ""
292358
}
293359

@@ -300,7 +366,7 @@ validate_deployment() {
300366
# Show deployment status
301367
show_status() {
302368
print_info "Deployment Status:"
303-
docker-compose ps
369+
docker compose ps
304370

305371
echo ""
306372
print_info "Service Health:"

0 commit comments

Comments
 (0)