| #!/bin/bash |
|
|
| |
| set -e |
|
|
| echo "π Starting production deployment..." |
|
|
| |
| if [ ! -f ".env.production" ]; then |
| echo "β .env.production file not found!" |
| echo "π Please copy .env.production.template to .env.production and configure it." |
| exit 1 |
| fi |
|
|
| |
| echo "π Validating environment configuration..." |
| source .env.production |
|
|
| if [ -z "$JWT_SECRET" ] || [ "$JWT_SECRET" = "your-super-secure-jwt-secret-key-change-this-in-production" ]; then |
| echo "β JWT_SECRET must be set to a secure value in .env.production" |
| exit 1 |
| fi |
|
|
| |
| echo "π Stopping existing containers..." |
| docker-compose -f docker-compose.prod.yml down |
|
|
| |
| echo "π§Ή Cleaning up old images..." |
| docker system prune -f |
|
|
| |
| echo "π¨ Building optimized containers..." |
| docker-compose -f docker-compose.prod.yml build --no-cache |
|
|
| echo "π Starting production services..." |
| docker-compose -f docker-compose.prod.yml up -d |
|
|
| |
| echo "β³ Waiting for services to be healthy..." |
| sleep 30 |
|
|
| |
| echo "π₯ Checking service health..." |
| if docker-compose -f docker-compose.prod.yml ps | grep -q "unhealthy"; then |
| echo "β Some services are unhealthy. Check logs:" |
| docker-compose -f docker-compose.prod.yml logs |
| exit 1 |
| fi |
|
|
| echo "β
Production deployment completed successfully!" |
| echo "π Frontend available at: http://localhost:3000" |
| echo "π§ Backend API available at: http://localhost:8000" |
| echo "π Qdrant available at: http://localhost:6333" |
| echo "π€ Ollama available at: http://localhost:11434" |
|
|
| echo "" |
| echo "π To view logs: docker-compose -f docker-compose.prod.yml logs -f" |
| echo "π To stop: docker-compose -f docker-compose.prod.yml down" |