mirror of
https://github.com/Dvorinka/Trackeep.git
synced 2026-06-04 12:32:58 +00:00
b083dac3f0
Add real API support in demo mode with credential checking, implement build-time version injection from package.json, and refactor update checking with 24-hour caching. Migrate landing page from Vue to Astro with comprehensive UI components including Hero, Features, Benefits, and Tech Stack sections. Update CI/CD workflow with expanded cache paths and security scanner version pinned.
4.7 KiB
4.7 KiB
Trackkeep Landing Page - Docker Deployment
This document explains how to deploy the Trackkeep landing page using Docker.
Quick Start
1. Build and Run with Docker Compose
# Build and start the container
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the container
docker-compose down
The landing page will be available at http://localhost:8080
2. Build and Run with Docker
# Build the image
docker build -t trackeep-landing .
# Run the container
docker run -d -p 8080:80 --name trackeep-landing trackeep-landing
# View logs
docker logs trackeep-landing
# Stop the container
docker stop trackeep-landing
Production Deployment with SSL
Using Docker Compose with Traefik
# Start with SSL termination (Traefik)
docker-compose --profile ssl up -d
# Access Traefik dashboard
http://localhost:8081
Environment Variables
Create a .env file for production:
NODE_ENV=production
DOMAIN=trackeep.org
EMAIL=admin@trackeep.org
Configuration
Dockerfile
- Multi-stage build: Optimized for production with minimal image size
- Nginx: Serves static files with gzip compression and security headers
- Health check: Built-in health endpoint at
/health
Nginx Configuration
- Port: 80 (can be mapped to any port)
- Compression: Gzip enabled for static assets
- Caching: 1-year cache for static assets
- Security: Headers for XSS protection, content type options, etc.
- Health endpoint:
/healthfor health checks
Docker Compose
- Service:
trackeep-landingon port 8080 - Health check: Every 30 seconds with curl
- Restart policy:
unless-stopped - SSL: Optional Traefik configuration for HTTPS
Deployment Options
1. Simple Deployment
docker-compose up -d
2. Production with SSL
# Create letsencrypt directory
mkdir -p letsencrypt
# Start with SSL
docker-compose --profile ssl up -d
3. Custom Domain
Update the docker-compose.yml file with your domain:
labels:
- "traefik.http.routers.trackeep-landing.rule=Host(`your-domain.com`)"
- "traefik.http.routers.trackeep-landing.tls.certresolver=letsencrypt"
- "traefik.http.routers.trackeep-landing.tls.certresolver.acme.email=your-email@domain.com"
Monitoring
Health Check
# Check health
curl http://localhost:8080/health
# Expected response: "healthy"
Logs
# View application logs
docker-compose logs trackeep-landing
# View nginx logs
docker-compose exec trackeep-landing tail -f /var/log/nginx/access.log
docker-compose exec trackeep-landing tail -f /var/log/nginx/error.log
Performance
Image Size
- Base image: nginx:alpine (~20MB)
- Final image: ~50MB (including built assets)
Build Time
- Initial build: ~2-3 minutes
- Rebuild: ~30 seconds (with Docker layer caching)
Runtime Performance
- Memory usage: ~10-20MB
- CPU usage: Minimal (static file serving)
- Response time: <100ms for cached assets
Troubleshooting
Common Issues
- Port conflicts: Change the port mapping in docker-compose.yml
- Build failures: Check Node.js version compatibility
- SSL issues: Verify domain configuration and DNS records
Debug Commands
# Check container status
docker-compose ps
# Inspect container
docker-compose exec trackeep-landing sh
# Test nginx configuration
docker-compose exec trackeep-landing nginx -t
# Reload nginx
docker-compose exec trackeep-landing nginx -s reload
CI/CD Integration
GitHub Actions Example
name: Deploy Landing Page
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build and push Docker image
run: |
docker build -t trackeep-landing .
docker push ${{ secrets.REGISTRY_URL }}/trackeep-landing
- name: Deploy to production
run: |
docker-compose pull
docker-compose up -d
Security Considerations
- Non-root user: Nginx runs as non-root user
- Minimal attack surface: Only necessary packages installed
- Security headers: XSS protection, content type options, etc.
- SSL/TLS: Optional HTTPS with Let's Encrypt
- Rate limiting: Can be added via Nginx configuration
Backup and Recovery
Backup
# Export container
docker export trackeep-landing > trackeep-landing-backup.tar
# Backup nginx logs
docker cp trackeep-landing:/var/log/nginx ./logs-backup
Recovery
# Import container
docker import trackeep-landing-backup.tar trackeep-landing:backup
# Restore with new container
docker run -d -p 8080:80 --name trackeep-landing-restored trackeep-landing:backup