Add deployment script and health checks for zero-downtime updates
This commit is contained in:
@@ -18,6 +18,12 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./data:/app/data
|
- ./data:/app/data
|
||||||
- ./public/uploads:/app/public/uploads
|
- ./public/uploads:/app/public/uploads
|
||||||
|
healthcheck:
|
||||||
|
test: [ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/api/daily" ]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 40s
|
||||||
# Initialize DB if needed and run migration
|
# Initialize DB if needed and run migration
|
||||||
command: >
|
command: >
|
||||||
sh -c "npx -y prisma@6.19.0 db push && node scripts/migrate-covers.mjs && node server.js"
|
sh -c "npx -y prisma@6.19.0 db push && node scripts/migrate-covers.mjs && node server.js"
|
||||||
|
|||||||
25
scripts/deploy.sh
Executable file
25
scripts/deploy.sh
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "🚀 Starting optimized deployment..."
|
||||||
|
|
||||||
|
# Pull latest changes
|
||||||
|
echo "📥 Pulling latest changes from git..."
|
||||||
|
git pull
|
||||||
|
|
||||||
|
# Build new image in background (doesn't stop running container)
|
||||||
|
echo "🔨 Building new Docker image (this runs while app is still online)..."
|
||||||
|
docker compose build
|
||||||
|
|
||||||
|
# Quick restart with pre-built image
|
||||||
|
echo "🔄 Restarting with new image (minimal downtime)..."
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# Clean up old images
|
||||||
|
echo "🧹 Cleaning up old images..."
|
||||||
|
docker image prune -f
|
||||||
|
|
||||||
|
echo "✅ Deployment complete!"
|
||||||
|
echo ""
|
||||||
|
echo "📊 Showing logs (Ctrl+C to exit)..."
|
||||||
|
docker compose logs -f
|
||||||
Reference in New Issue
Block a user