Añadido Dockerfil docker-compose.yml
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# ─── EnFlow VPS Deploy Script ────────────────────────────────────────────────
|
||||
# Usage: ./deploy.sh [domain] [email]
|
||||
# Example: ./deploy.sh cirux.silvioalzate.shop silvio@example.com
|
||||
|
||||
DOMAIN=${1:-cirux.silvioalzate.shop}
|
||||
EMAIL=${2:-silvio@example.com}
|
||||
APP_DIR=$(pwd)
|
||||
|
||||
echo "🚀 EnFlow Deploy Script"
|
||||
echo " Domain: $DOMAIN"
|
||||
echo " Email: $EMAIL"
|
||||
echo ""
|
||||
|
||||
# ─── Prerequisites Check ─────────────────────────────────────────────────────
|
||||
echo "📋 Checking prerequisites..."
|
||||
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo "❌ Docker not found. Installing..."
|
||||
curl -fsSL https://get.docker.com | sh
|
||||
sudo usermod -aG docker $USER
|
||||
fi
|
||||
|
||||
if ! command -v docker-compose &> /dev/null; then
|
||||
echo "❌ Docker Compose not found. Installing..."
|
||||
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||||
sudo chmod +x /usr/local/bin/docker-compose
|
||||
fi
|
||||
|
||||
# ─── SSL Certificates ──────────────────────────────────────────────────────
|
||||
echo "🔐 Setting up SSL certificates..."
|
||||
|
||||
mkdir -p certbot/conf certbot/www
|
||||
|
||||
if [ ! -d "certbot/conf/live/$DOMAIN" ]; then
|
||||
echo " Obtaining initial certificate for $DOMAIN..."
|
||||
|
||||
# Start nginx temporarily for certbot challenge
|
||||
docker-compose up -d nginx
|
||||
sleep 5
|
||||
|
||||
# Get certificate
|
||||
docker-compose run --rm certbot certonly \
|
||||
--webroot \
|
||||
--webroot-path=/var/www/certbot \
|
||||
--email "$EMAIL" \
|
||||
--agree-tos \
|
||||
--no-eff-email \
|
||||
-d "$DOMAIN"
|
||||
|
||||
# Stop temporary nginx
|
||||
docker-compose down
|
||||
fi
|
||||
|
||||
# ─── Update nginx.conf domain ────────────────────────────────────────────────
|
||||
echo "📝 Updating nginx configuration..."
|
||||
sed -i "s/cirux.silvioalzate.shop/$DOMAIN/g" nginx.conf
|
||||
|
||||
# ─── Environment Variables ─────────────────────────────────────────────────
|
||||
echo "🔧 Checking environment variables..."
|
||||
|
||||
if [ ! -f ".env.local" ]; then
|
||||
echo "⚠️ .env.local not found! Creating from example..."
|
||||
cp .env.local.example .env.local
|
||||
echo "❌ IMPORTANT: Edit .env.local with your real credentials before continuing!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ─── Build & Deploy ────────────────────────────────────────────────────────
|
||||
echo "🏗️ Building Docker images..."
|
||||
docker-compose down 2>/dev/null || true
|
||||
docker-compose build --no-cache
|
||||
|
||||
echo "🚀 Starting services..."
|
||||
docker-compose up -d
|
||||
|
||||
# ─── Verify Deployment ─────────────────────────────────────────────────────
|
||||
echo "✅ Verifying deployment..."
|
||||
sleep 10
|
||||
|
||||
if curl -sf http://localhost:3000/api/health > /dev/null 2>&1; then
|
||||
echo "✅ App is responding on port 3000"
|
||||
else
|
||||
echo "⚠️ App health check failed. Check logs: docker-compose logs enflow-app"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "─────────────────────────────────────────"
|
||||
echo "🎉 Deployment Complete!"
|
||||
echo ""
|
||||
echo " App: https://$DOMAIN"
|
||||
echo " Logs: docker-compose logs -f enflow-app"
|
||||
echo " Restart: docker-compose restart enflow-app"
|
||||
echo " Update: git pull && ./deploy.sh"
|
||||
echo ""
|
||||
echo " SSL cert will auto-renew via certbot."
|
||||
echo "─────────────────────────────────────────"
|
||||
Reference in New Issue
Block a user