cidadao.ai-backend / deploy.sh
anderson-ufrj
docs: add comprehensive deployment guide and configurations
8f710f3
#!/bin/bash
# Deploy Script for Cidadão.AI
set -e
echo "🚀 Cidadão.AI Deploy Script"
echo "=========================="
# Check environment
if [ -z "$1" ]; then
echo "Usage: ./deploy.sh [local|render|railway|k8s|vps]"
exit 1
fi
DEPLOY_TARGET=$1
case $DEPLOY_TARGET in
"local")
echo "📦 Deploying locally with Docker Compose..."
# Check if .env exists
if [ ! -f .env ]; then
echo "Creating .env file..."
cp .env.example .env
echo "⚠️ Please edit .env with your credentials"
exit 1
fi
# Build and start services
docker-compose -f docker-compose.production.yml up -d --build
# Run migrations
echo "Running database migrations..."
docker-compose -f docker-compose.production.yml exec api python -m alembic upgrade head
echo "✅ Local deployment complete!"
echo "🌐 API available at http://localhost:8000"
;;
"render")
echo "☁️ Deploying to Render..."
# Check Render CLI
if ! command -v render &> /dev/null; then
echo "Installing Render CLI..."
pip install render-cli
fi
# Deploy
render up
echo "✅ Render deployment initiated!"
;;
"railway")
echo "🚂 Deploying to Railway..."
# Check Railway CLI
if ! command -v railway &> /dev/null; then
echo "Please install Railway CLI: https://docs.railway.app/develop/cli"
exit 1
fi
# Login and deploy
railway login
railway up
echo "✅ Railway deployment complete!"
;;
"k8s")
echo "☸️ Deploying to Kubernetes..."
# Check kubectl
if ! command -v kubectl &> /dev/null; then
echo "kubectl not found. Please install it first."
exit 1
fi
# Create namespace
kubectl create namespace cidadao-ai --dry-run=client -o yaml | kubectl apply -f -
# Create secrets
echo "Creating secrets..."
kubectl create secret generic cidadao-secrets \
--from-literal=database-url="${DATABASE_URL}" \
--from-literal=redis-url="${REDIS_URL}" \
--from-literal=maritaca-api-key="${MARITACA_API_KEY}" \
--namespace=cidadao-ai \
--dry-run=client -o yaml | kubectl apply -f -
# Apply configurations
kubectl apply -f k8s/ -n cidadao-ai
echo "✅ Kubernetes deployment complete!"
;;
"vps")
echo "🖥️ Deploying to VPS..."
# Check SSH config
if [ -z "$VPS_HOST" ]; then
echo "Please set VPS_HOST environment variable"
exit 1
fi
# Copy files
echo "Copying files to VPS..."
rsync -avz --exclude='.git' --exclude='__pycache__' --exclude='.env' . $VPS_HOST:~/cidadao-ai/
# Setup on VPS
ssh $VPS_HOST << 'ENDSSH'
cd ~/cidadao-ai
# Install Docker if needed
if ! command -v docker &> /dev/null; then
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
fi
# Install Docker Compose if needed
if ! command -v docker-compose &> /dev/null; then
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
fi
# Start services
docker-compose -f docker-compose.production.yml up -d --build
# Setup nginx and SSL
sudo apt-get update
sudo apt-get install -y nginx certbot python3-certbot-nginx
echo "VPS setup complete!"
ENDSSH
echo "✅ VPS deployment complete!"
;;
*)
echo "❌ Unknown deploy target: $DEPLOY_TARGET"
echo "Options: local, render, railway, k8s, vps"
exit 1
;;
esac
echo ""
echo "🎉 Deployment finished!"
echo ""
echo "Next steps:"
echo "1. Check application logs"
echo "2. Run health checks"
echo "3. Configure monitoring"
echo "4. Setup backups"