- Add Dockerfile with multi-stage build (Node.js + Nginx) - Add docker-compose.yml for Portainer stack deployment on port 7777 - Add nginx.conf with PWA support, gzip compression, and security headers - Add .dockerignore for optimized Docker builds - Add DEPLOYMENT.md with comprehensive deployment guide - Configure Vite PWA plugin with service worker and offline support - Add PWA manifest.json with app icons and shortcuts - Enhance logo.svg with iOS-style glass effects (filters, gradients, highlights) - Add app-icon.svg for PWA installation - Update mobile nav with glassmorphic active tab styling - Fix mobile tab bar layout shift issues with flex-1 and consistent sizing - Update index.html with PWA meta tags and Apple-specific settings - Add health check endpoint at /health for container monitoring Co-authored-by: Cursor <cursoragent@cursor.com>
3.2 KiB
3.2 KiB
IndeedHub - Portainer Deployment Guide
Quick Deploy with Portainer Stacks
Method 1: Using Portainer Stacks (Recommended)
- Log into Portainer
- Navigate to Stacks
- Click "Add Stack"
- Choose "Git Repository" or "Upload" the
docker-compose.yml - Configure:
- Name:
indeedhub-prototype - Repository URL: (your git repo)
- Compose path:
docker-compose.yml
- Name:
- Deploy
Method 2: Using Docker Compose Directly
# Build and run
docker-compose up -d --build
# View logs
docker-compose logs -f
# Stop
docker-compose down
Access
- Application URL:
http://your-server:7777 - Health Check:
http://your-server:7777/health
Configuration
Port Configuration
The application runs on port 7777 by default. To change:
# In docker-compose.yml
ports:
- "YOUR_PORT:7777"
Environment Variables
Add any required environment variables in docker-compose.yml:
environment:
- NODE_ENV=production
- VITE_API_URL=https://your-api.com
Build Details
Multi-stage Docker Build
- Builder Stage: Compiles Vue/TypeScript application
- Production Stage: Serves built files with Nginx
Features
- ✅ Nginx web server (Alpine Linux)
- ✅ Gzip compression
- ✅ Security headers
- ✅ PWA support with proper MIME types
- ✅ Vue Router SPA fallback
- ✅ Service Worker support
- ✅ Health check endpoint
- ✅ Auto-restart enabled
Monitoring
Health Check
curl http://localhost:7777/health
Container Status
docker ps | grep indeedhub
View Logs
docker logs -f indeedhub-app
Updates
Rebuild and Deploy
docker-compose down
docker-compose up -d --build
Using Portainer
- Go to your stack
- Click "Update"
- Enable "Pull latest image"
- Click "Update the stack"
Troubleshooting
Container won't start
# Check logs
docker logs indeedhub-app
# Check if port is available
lsof -i :7777
Build fails
# Clear Docker cache
docker builder prune
# Rebuild without cache
docker-compose build --no-cache
Production Checklist
- ✅ Port 7777 exposed
- ✅ Health checks configured
- ✅ Auto-restart enabled
- ✅ Gzip compression enabled
- ✅ Security headers set
- ✅ PWA manifest support
- ✅ Service worker caching
- ✅ SPA routing configured
- ✅ Docker networking isolated
Stack Configuration for Portainer
Copy this into Portainer Stack editor:
version: '3.8'
services:
indeedhub:
image: indeedhub-prototype:latest
build:
context: .
dockerfile: Dockerfile
container_name: indeedhub-app
restart: unless-stopped
ports:
- "7777:7777"
environment:
- NODE_ENV=production
networks:
- indeedhub-network
labels:
- "com.centurylinklabs.watchtower.enable=true"
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:7777/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
indeedhub-network:
driver: bridge
Support
For issues, check:
- Container logs:
docker logs indeedhub-app - Health endpoint:
http://localhost:7777/health - Nginx config:
/etc/nginx/conf.d/default.conf