Skip to content

Commit 667e8c5

Browse files
authored
Merge pull request #9 from rendiffdev/fix/setup-prerequisite
feat: add automatic Docker and Docker Compose installation to setup s…
2 parents b1d4ceb + 6f20c37 commit 667e8c5

File tree

2 files changed

+92
-16
lines changed

2 files changed

+92
-16
lines changed

.github/workflows/ci.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ name: Build & Publish Docker Image
33
on:
44
push:
55
branches: [ main ]
6-
pull_request:
7-
branches: [ main ]
86

97
permissions:
108
contents: read

setup.sh

Lines changed: 92 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -62,25 +62,103 @@ 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+
# 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
66115
check_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"
@@ -108,7 +186,7 @@ EOF
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 ""
@@ -154,7 +232,7 @@ EOF
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
189267
EOF
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
301379
show_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

Comments
 (0)