Files
dbis_core/scripts/fix-frontend-deployment.sh

140 lines
4.2 KiB
Bash
Raw Normal View History

2026-01-02 20:27:42 -08:00
#!/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