140 lines
4.2 KiB
Bash
Executable File
140 lines
4.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Fix Frontend Deployment - Build and Deploy Frontend Application
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
|
|
# Source utilities
|
|
source "$PROJECT_ROOT/dbis_core/scripts/utils/common.sh" 2>/dev/null || true
|
|
|
|
log_info "========================================="
|
|
log_info "Fix Frontend Deployment"
|
|
log_info "========================================="
|
|
log_info ""
|
|
|
|
# Check if running on Proxmox host
|
|
if command_exists pct; then
|
|
FRONTEND_VMID="${VMID_DBIS_FRONTEND:-10130}"
|
|
|
|
log_info "Detected Proxmox host - fixing frontend in container $FRONTEND_VMID"
|
|
log_info ""
|
|
|
|
# Check if container exists
|
|
if ! pct status "$FRONTEND_VMID" &>/dev/null; then
|
|
log_error "Container $FRONTEND_VMID not found"
|
|
exit 1
|
|
fi
|
|
|
|
# Start container if not running
|
|
if [ "$(pct status "$FRONTEND_VMID" 2>/dev/null | awk '{print $2}')" != "running" ]; then
|
|
log_info "Starting container $FRONTEND_VMID..."
|
|
pct start "$FRONTEND_VMID"
|
|
sleep 5
|
|
fi
|
|
|
|
log_info "Building frontend application..."
|
|
log_info ""
|
|
|
|
# Install dependencies if needed
|
|
log_info "Checking dependencies..."
|
|
pct exec "$FRONTEND_VMID" -- bash -c "
|
|
cd /opt/dbis-core/frontend || cd /opt/dbis-core/frontend || { echo 'Frontend directory not found'; exit 1; }
|
|
|
|
if [ ! -d 'node_modules' ]; then
|
|
echo 'Installing dependencies...'
|
|
npm install
|
|
else
|
|
echo 'Dependencies already installed'
|
|
fi
|
|
" 2>&1 | grep -vE "(perl: warning|locale:)" || {
|
|
log_error "Failed to install dependencies"
|
|
exit 1
|
|
}
|
|
|
|
# Build the application
|
|
log_info "Building frontend..."
|
|
pct exec "$FRONTEND_VMID" -- bash -c "
|
|
cd /opt/dbis-core/frontend
|
|
npm run build
|
|
" 2>&1 | tail -30 | grep -vE "(perl: warning|locale:)" || {
|
|
log_error "Build failed - check errors above"
|
|
exit 1
|
|
}
|
|
|
|
# Verify build
|
|
log_info "Verifying build..."
|
|
if pct exec "$FRONTEND_VMID" -- test -f /opt/dbis-core/frontend/dist/index.html; then
|
|
log_success "✅ Build successful!"
|
|
else
|
|
log_error "❌ Build failed - index.html not found"
|
|
exit 1
|
|
fi
|
|
|
|
# Restart nginx
|
|
log_info "Restarting nginx..."
|
|
pct exec "$FRONTEND_VMID" -- systemctl restart nginx 2>&1 | grep -vE "(perl: warning|locale:)" || {
|
|
log_warn "Nginx restart had issues, checking status..."
|
|
pct exec "$FRONTEND_VMID" -- systemctl status nginx --no-pager -l || true
|
|
}
|
|
|
|
# Verify nginx is running
|
|
if pct exec "$FRONTEND_VMID" -- systemctl is-active --quiet nginx; then
|
|
log_success "✅ Nginx is running"
|
|
else
|
|
log_error "❌ Nginx is not running"
|
|
exit 1
|
|
fi
|
|
|
|
log_success ""
|
|
log_success "Frontend deployment fixed!"
|
|
log_info ""
|
|
log_info "Frontend should now be accessible at:"
|
|
log_info " http://${DBIS_FRONTEND_IP:-192.168.11.130}"
|
|
log_info ""
|
|
log_info "If you still see the placeholder message:"
|
|
log_info " 1. Clear your browser cache (Ctrl+Shift+R or Cmd+Shift+R)"
|
|
log_info " 2. Check browser console for errors"
|
|
log_info " 3. Verify nginx is serving from: /opt/dbis-core/frontend/dist"
|
|
|
|
else
|
|
# Running directly on the container
|
|
log_info "Running directly on container - building frontend..."
|
|
log_info ""
|
|
|
|
FRONTEND_DIR="${DBIS_CORE_PROJECT_ROOT:-/opt/dbis-core}/frontend"
|
|
|
|
if [ ! -d "$FRONTEND_DIR" ]; then
|
|
log_error "Frontend directory not found: $FRONTEND_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
cd "$FRONTEND_DIR"
|
|
|
|
# Install dependencies if needed
|
|
if [ ! -d "node_modules" ]; then
|
|
log_info "Installing dependencies..."
|
|
npm install
|
|
fi
|
|
|
|
# Build
|
|
log_info "Building frontend..."
|
|
npm run build
|
|
|
|
# Verify
|
|
if [ -f "dist/index.html" ]; then
|
|
log_success "✅ Build successful!"
|
|
else
|
|
log_error "❌ Build failed - index.html not found"
|
|
exit 1
|
|
fi
|
|
|
|
# Restart nginx
|
|
log_info "Restarting nginx..."
|
|
systemctl restart nginx
|
|
|
|
log_success ""
|
|
log_success "Frontend deployment fixed!"
|
|
fi
|