Vitron-Front/DEPLOYMENT.md
2026-04-29 01:44:16 +03:30

190 lines
5.0 KiB
Markdown

# Production Deployment Guide
## Overview
This project uses a **Blue-Green deployment** strategy with **automatic rollback** capabilities to ensure zero-downtime deployments and quick recovery from failures.
## Architecture
### Blue-Green Deployment
- **Blue Service**: Currently serving production traffic
- **Green Service**: New deployment being tested
- **Traffic Switch**: Instant switchover via Traefik labels
- **Automatic Rollback**: Health check failures trigger immediate rollback
### Key Features
-**Zero-downtime deployments**
-**Automatic health checks**
-**Instant rollback on failure**
-**Backup system with retention**
-**Build verification before traffic switch**
-**Resource limits and security**
## Deployment Process
### Automatic Deployment (Recommended)
1. **Create Release Tag**:
```bash
git tag 1.0.1-release
git push origin 1.0.1-release
```
2. **Monitor Progress**:
- GitHub Actions: `https://github.com/sotoontech/Vitron-Front/actions`
- Server logs: `ssh root@prod-server 'docker-compose -f /opt/front-prod/Vitron-Front/docker-compose.yml logs -f'`
### Deployment Steps (Automatic)
1. **Backup**: Current deployment tagged as backup
2. **Build**: New version built in parallel (green/blue)
3. **Health Check**: 10 attempts over 100 seconds
4. **Traffic Switch**: Instant switchover via Traefik
5. **Verification**: Final check on live domain
6. **Cleanup**: Old deployment stopped and cleaned
## Manual Operations
### Emergency Rollback
```bash
# SSH to production server
ssh root@prod-server
# Go to project directory
cd /opt/front-prod/Vitron-Front
# Rollback to latest backup
./scripts/rollback.sh
# Or rollback to specific backup
./scripts/rollback.sh vitron-frontend-backup:20240906_150230
```
### Check Status
```bash
# Check running containers
docker ps | grep vitron
# Check available backups
docker images | grep vitron-frontend-backup
# Check service health
docker exec vitron-frontend-blue wget --spider http://localhost:3000/
curl -I https://vitrown.com/
# Check logs
docker-compose logs -f vitron-frontend-blue
docker-compose logs -f vitron-frontend-green
```
### Manual Deployment
```bash
# SSH to server
ssh root@prod-server
cd /opt/front-prod/Vitron-Front
# Pull latest changes
git fetch --all
git checkout main
git pull origin main
# Deploy manually
docker-compose -f docker-compose.yml up -d --build
```
## Environment Configuration
### Required GitHub Secrets
- `PROD_SSH_HOST`: Production server IP/hostname
- `PROD_SSH_KEY`: SSH private key for server access
- `PROD_REMIX_SECRET`: Strong random string for session encryption
### Environment Variables
```bash
NODE_ENV=production
VITE_API_BASE_URL=https://api.prod.vitrown.com
VITE_API_SOCKET_BASE_URL=wss://api.prod.vitrown.com
VITE_API_URL=https://api.prod.vitrown.com
VITE_SITE_URL=https://vitrown.com
VITE_DOMAIN_URL=https://vitrown.com
VITE_APP_VERSION_TYPE=production
REMIX_SECRET=[FROM_GITHUB_SECRETS]
```
## Troubleshooting
### Common Issues
1. **Build Failed**
```bash
# Check build logs
docker-compose logs vitron-frontend-[color]
# Manual build test
docker-compose build vitron-frontend-blue
```
2. **Health Check Failed**
```bash
# Check container status
docker exec vitron-frontend-[color] ps aux
# Check internal health
docker exec vitron-frontend-[color] wget --spider http://localhost:3000/
# Check logs
docker exec vitron-frontend-[color] tail -f /var/log/nginx/error.log
```
3. **Rollback Issues**
```bash
# List available backups
docker images | grep backup
# Manual container start
docker run -d --name manual-rollback vitron-frontend-backup:20240906_150230
```
### Health Check Endpoints
- Internal: `http://localhost:3000/` (container health)
- External: `https://vitrown.com/` (public endpoint)
- API: `https://api.prod.vitrown.com/api/health/` (backend health)
## Security Features
- **Non-root user**: Containers run as `remix` user (UID 1001)
- **Security headers**: X-Frame-Options, X-Content-Type-Options, etc.
- **HTTPS enforcement**: Automatic redirect from HTTP
- **Resource limits**: Memory limits prevent resource exhaustion
- **Network isolation**: Services run in isolated Docker network
## Monitoring
### Key Metrics to Monitor
- Container health status
- Response time on health checks
- Memory usage (limit: 512MB)
- Disk space (Docker images)
- SSL certificate expiry
### Log Locations
- Application logs: `docker-compose logs`
- Traefik logs: Check proxy network logs
- System logs: `/var/log/syslog` on server
## Backup Strategy
- **Automatic**: Every deployment creates timestamped backup
- **Retention**: Last 3 backups kept automatically
- **Manual backup**: `docker tag vitron-frontend-blue vitron-frontend-backup:manual-$(date +%Y%m%d_%H%M%S)`
## Performance Optimizations
- **Multi-stage build**: Smaller production images
- **Asset optimization**: Terser minification, tree shaking
- **Caching**: Docker layer caching, npm ci
- **Resource limits**: Prevents memory leaks
- **Health checks**: Quick failure detection